Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在表单中提供静态方法?_C#_Forms_Static - Fatal编程技术网

C# 如何在表单中提供静态方法?

C# 如何在表单中提供静态方法?,c#,forms,static,C#,Forms,Static,我刚把我的修改菜单改成了公共菜单,现在我得到了这个 CS0120非静态字段、方法或属性的HomeForm.checkBeamToolStripMenuItem需要对象引用 如何在编码中提供静态方法?提前谢谢 我的代码是: private void AnalysisForm_FormClosing(object sender, EventArgs e) { HomeForm.checkBeamToolStripMenuItem.Enabled = true; } 你犯了一个典型的错误

我刚把我的修改菜单改成了公共菜单,现在我得到了这个

CS0120非静态字段、方法或属性的HomeForm.checkBeamToolStripMenuItem需要对象引用

如何在编码中提供静态方法?提前谢谢

我的代码是:

private void AnalysisForm_FormClosing(object sender, EventArgs e)
 {
    HomeForm.checkBeamToolStripMenuItem.Enabled = true;
 }

你犯了一个典型的错误,似乎在StackOverflow上引发了大量类似的问题,这就是如何从一个表单引用另一个表单。(在stackoverflow上搜索,你会发现很多关于如何实现的变化)

但是这样做的基本思想是你需要一个指向另一个表单的对象引用。您要做的是访问不是对象的类“HomeForm”

因此,在创建表单的某个地方,您需要做的是将对象引用传递给分析表单,以便您可以告诉它执行操作

var homeform = new HomeForm();
var analysis = new AnalysisForm(homeform);

不过,我会为自己做完全不同的事情,首先在homeform上创建一个方法,而不是访问它的控件

HomeForm和AnalysisForm是否在单独的项目中定义?如果是,则需要在初始化期间将被调用表单(例如HomeForm)的实例传递给调用表单(AnalysisForm)。如果HomeForm打开了AnalysisForm,则只需在创建AnalysisForm时在HomeForm中连接AnalysisForm的FormClosed()事件,就不需要传递任何引用。