我有一个C#Windows窗体,其中包含一个名为automation的函数。然后我有一个C#控制台应用程序,我试图用来调用Windows窗体的功能。我创建了这个参考资料并且已经做到了这一点:
Form1 FormInstance = new Form1();
FormInstance.automation += new EventHandler(?);
我的问题是,我试图在我的问号上添加一些东西,但我继续收到错误。如果我这样设置:
FormInstance.automation += new EventHandler(NewHandler);
我在当前的上下文中不存在“NewHandler”。
如果我创建
public void NewHandler(object sender, EventArgs e)
我得到非静态字段,方法或属性需要对象引用。
我无法弄清楚我做错了什么。
答案 0 :(得分:1)
它应该是object.NewHandler
,其中object
可能是this
,如果这发生在成员方法的上下文中。你可以原谅这一点,因为大多数成员引用都可以是隐式的,但是这个引用必须是明确的。
答案 1 :(得分:1)
在高级别它的工作原理如下:
public static void Main(string[] args)
{
Form x = new Form();
x.Method = new EventHandler(MyHandler);
}
public static void MyHandler(object sender, EventArgs e)
{
// Stuff
}
看起来你没有使用static关键字标记你的方法(如果通过像控制台main这样的静态方法调用它)。您还需要确保为事件分配适当的委托;即,您的方法中的automation
需要能够接受EventHandler委托。
答案 2 :(得分:0)
最简单的方法是使事件处理程序方法静态
public static void NewHandler(object sender, EventArgs e)