从另一个C#应用程序发出运行C#函数的问题

时间:2011-03-29 16:47:26

标签: c# function com reference

我有一个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)

我得到非静态字段,方法或属性需要对象引用。

我无法弄清楚我做错了什么。

3 个答案:

答案 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)