C# 如何使用EventHandler?

发布于 2024-12-09 07:55:10 字数 550 浏览 0 评论 0原文

我只是创建一个 ContextMenu..

在这一行,我不知道应该在第三个参数中放入什么(或者更好:我必须如何形成它-语法-):

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

在“此处”我必须设置一个EventHandler onClick

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

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

我怎样才能调用这个方法? (通过事件处理程序?)或者我是否必须创建一个类似以下的方法:

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

I'm just creating a ContextMenu..

At this line, I don't know what I shall put in the third param (or better: how I have to form it -syntaxly-):

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

on 'HERE' I have to set an EventHandler onClick

By Example I got this Method:

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

How could I call this Method? (Over the Eventhandler?) or do I have to make a Method like:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

月亮是我掰弯的 2024-12-16 07:55:10

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

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);

Don't "call" the method but take its address. Which means omitting the ()

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);
留蓝 2024-12-16 07:55:10

正如您参见此处,回调必须具有以下内容原型:

public delegate void EventHandler( Object sender, EventArgs e )

所以你的方法 DoSomething 必须如下所示:

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

As you can see here, the callback has to have the following prototype:

public delegate void EventHandler( Object sender, EventArgs e )

So your method DoSomething has to look like:

private void DoSomething(object sender, EventArgs e)
{
    //...
}
洛阳烟雨空心柳 2024-12-16 07:55:10

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

示例如下:

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

有关使用 Linq 的更多信息,请参阅此处:http://msdn.microsoft .com/library/bb308959.aspx

You can create an anonymous event handler using the Linq libraries and call your method that way. This can be a nice and quick way of doing something (especially if it's just a test project). But if you start using it extensively, it might become difficult to read it.

An example of this would be:

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

Refer here for further information on using Linq: http://msdn.microsoft.com/library/bb308959.aspx

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文