首页 > 解决方案 > Windows 窗体被视为“类型,在给定上下文中无效”

问题描述

我正在尝试使用 .net 框架自学 Windows 窗体应用程序的基础知识,因此我决定在 Visual Studio 19 上选择空项目模板,这样我就可以实际了解 .net 核心应用程序中自动生成的代码是什么关于和依赖什么。

无论如何,我通过为表单添加一个新的“类”文件来创建一个 form.cs 文件,但是在 program.cs 文件中创建我的主要方法时,“Application.run”行会生成一个错误,因为“MainForm”显然是“a类型,在给定的上下文中无效”。我了解 .net 核心与 .net 框架不同,但我认为很多 Windows 窗体代码与我所看到的看起来相同。对不起,如果这听起来很愚蠢,但我不知道如何解决这个问题。

标签: c#visual-studiowinforms

解决方案


欢迎来到 StackOverflow

可能 缺少括号和new括号。

Application.Run(new myForm());

代替 Application.Run(myForm);

第一行所做的是创建表单对象myForm并将其作为参数传递给Application.Run(...)函数。

第二行会给出一个编译时错误(你得到的那个)


江安

类的Run功能需要一个表单对象,当您在表单类上Application调用运算符时创建该对象(在上面的代码中)newmyForm

new当您要指定该类类型的另一个对象时,使用类型名称(没有被调用的形式类名称)。例如: myForm frm1;

在这里,变量frm1是在堆栈中创建的,并被指定为 type myForm。初始化此变量时,您需要将其分配给对象。该对象是通过调用new类上的运算符来创建的: new myForm()

myForm上面的行在堆中创建了一个类型的对象。要使用此对象,您需要一个可以指向此对象的变量(C# 中的引用和 C/C++ 中的指针)。为此,您可以将两个代码组合成 2 行或 1 行,如下所示

2行代码:

myForm frm1;`
frm1 = new myForm();

1 行代码

myForm1 frm1 = new myForm();

现在当你写代码时

frm1.Title = "My Form Title";

这将改变Title在堆中创建的对象的属性值。


推荐阅读