繁体   English   中英

C#.NET 4:如何从类文件中打开表单?

[英]C#.NET 4: How to open a form from inside a class file?

注意:我搜索并搜索了此内容,但找不到确切的东西...

因此,我正在制作一款类似于《辐射》(Fallout)但使用表单GUI而不是实际的第一人称游戏环境的游戏。 我需要该程序先加载一个类文件,并且希望该类文件打开主菜单。 如何获取Main.cs (要首先加载的类文件)来打开MainMenu.cs (要打开的表单)?

这是我最后尝试做的:

Form MainMenu = new MainMenu();
MainMenu.Show();

这样做会带来以下错误:

找不到类型或名称空间名称“ Form”(是否缺少using指令或程序集引用?)“ System.Windows.Forms.Form.Show(System.Windows.Forms.IWin32Window)”是一种“方法”但用作“类型”

第一个错误涉及以下行:

Form MainMenu = new MainMenu();

该代码不知道什么是Form 除非它在同一个命名空间中(在这种情况下实际上不应该这样),否则您需要完全限定它:

System.Windows.Forms.Form mainMenu = new MainMenu();

或在文件中添加using指令:

using System.Windows.Forms;

另外,如果还没有这样做,则您的类库将需要对System.Windows.Forms程序集的程序集引用。 (请注意,这作为一种技术将类库与Windows Forms紧密耦合。因此,如果不携带Windows Forms的引用,您将无法重用代码。)

如果项目本身完全了解类型,而您只是缺少using指令,则您可能更简单地使用特定类型,甚至隐式地使用:

var mainMenu = new MainMenu();

(另请注意,在某些代码中如何稍微更改了变量名,这导致我...)


第二个错误涉及此行:

MainMenu.Show();

MainMenu是一种类型 Show是上述类型对象的实例方法 该行使您看起来像是将其作为静态方法调用,还是试图将Show用作类型本身。 这使编译器感到困惑。

简而言之,不要为变量提供与类型相同的名称。 代替:

Form mainMenu = new MainMenu();
mainMenu.Show();

您的代码有一些问题,但是中断程序正在将对象命名为其类(MainMenu = new MainMenu())。 这会混淆编译器并导致其他错误。 该代码应阅读

MainMenu myMainMenu = new MainMenu();
myMainMenu.Show();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM