C#如何使用EventHandler?

时间:2011-10-12 12:57:40

标签: c# event-handling

我只是在创建一个ContextMenu ..

在这一行,我不知道我将把它放在第三个参数中(或者更好:我如何形成它 - -syntaxly-):

(contextMenuStrip.Items[0] as System.Windows.Forms.ToolStripMenuItem).DropDownItems.Add(contextUnterMenuStrip.Items.Add(exe),null, HERE);

在'这里'我必须设置EventHandler onClick

通过示例我得到了这个方法:

public void DoSomething()
{
//...
}

我怎么称这个方法? (通过Eventhandler?)或者我必须制作一个方法:

private void button_Click(object sender, RoutedEventArgs e)
{
    //...
}

3 个答案:

答案 0 :(得分:2)

不要“调用”该方法,而是取其地址。这意味着省略()

private void menuItem1_Click(object sender, EventArgs e)
{
    //...
}


// your code, I think it misses a few ')'
... (contextMenuStrip.Items[0] as System.Windows.Forms.ToolStripMenuItem)
       .DropDownItems.Add(contextUnterMenuStrip.Items
       .Add(exe),null, menuItem1_Click);

答案 1 :(得分:1)

尽可能see here,回调必须有以下原型:

public delegate void EventHandler( Object sender, EventArgs e )

所以你的方法DoSomething看起来像:

private void DoSomething(object sender, EventArgs e)
{
    //...
}

答案 2 :(得分:0)

您可以使用Linq库创建匿名事件处理程序,并以这种方式调用您的方法。这可以是一种很好的快速做事方式(特别是如果它只是一个测试项目)。但如果你开始广泛使用它,可能会很难阅读它。

这方面的一个例子是:

var menuItem1 = new MenuItem();
menuItem1.Click += (sender, e) => DoSomething();

有关使用Linq:http://msdn.microsoft.com/library/bb308959.aspx

的更多信息,请参阅此处