我的代码有什么问题吗?
using System;
using System.Windows.Forms;
public class MyProgram
{
Form Form1 = new Form();
public static void Main(string[] args)
{
Form1.FormClosing += new System.Windows.Forms.FormClosingEventHandler(Form1_Closing);
Form1 .Show();
}
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel = true;
}
}
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
错误ID:CS0120,错误:非静态字段,方法或属性'MyProgram.Form1_Closing(object,System.ComponentModel.CancelEventArgs)',行:10,列:30错误ID:CS0120,需要对象引用,错误:非静态字段,方法或属性需要对象引用
您的Form实例变量无法访问主类的Form1_Closing()回调,因为它是一个实例方法,但您在静态上下文(您的Main()方法)中添加了事件处理程序.
您必须使用实例添加该事件处理程序MyProgram,而不是通过该Main()方法:
MyProgram main = new MyProgram();
main.Form1.FormClosing += new FormClosingEventHandler(main.Form1_Closing);
main.Form1.Show();
Run Code Online (Sandbox Code Playgroud)
或者将您的Form字段声明为静态字段,并将Form1_Closing()事件处理程序声明为静态方法,以便Main()可以使用它们:
static Form Form1 = new Form();
private static void Form1_Closing(...)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
851 次 |
| 最近记录: |