如何在 C# 代码中将事件处理程序添加到 ToolStripButton?

How to add a event handler to a ToolStripButton in C# code?

又是我,这是我的 c# 浏览器 插件解析器 的另一个问题,我正在尝试将事件处理程序添加到当你点击插件按钮时,让它到达它做某事的地方。我必须在代码中执行此操作的原因是因为它是从文件加载插件,并且它们不是硬编码的。 这是我的代码,如果你看到它,它看起来和上一个很相似

toolStrip1.Items.Add( pluginButton );
pluginButton.Image = Simple_Browse.Properties.Resources.plugin;
pluginButton.Alignment = ToolStripItemAlignment.Right;
pluginButton.ToolTipText = TitlePlugin;
pluginButton.Click += StartPlugin();
private EventHandler StartPlugin()
{

    PluginPage plgp = new PluginPage();
    plgp.Show();
    plgp.Text = PlgTitle2;

}

因此代码非常基本,但我在 private EventHandler StartPlugin() 处遇到错误 并非所有代码路径 return一个值请帮忙!

private EventHandler StartPlugin()

这一行,特别是 "EventHandler",意味着您正在 return 一个 EventHandler。您的代码不会这样做。要link按钮点击事件处理程序,你不只是使用一行,你还需要一个return,(e.x return button1.Click;)因为如果我使用了 return null;一旦你绑定它,它就会执行该操作。

您可能打算这样做:

pluginButton.Click += StartPlugin; // not StartPlugin()
private void StartPlugin(object sender, EventArgs e)
{
    PluginPage plgp = new PluginPage();
    plgp.Show();
    plgp.Text = PlgTitle2;
}

看来您可能需要阅读更多有关委托和事件处理程序如何工作的内容。

您正在请求 EventHandler,这意味着您必须 return EventHandler。在您的处理程序中没有 return,因此抛出此错误。

您可以使用 private void StartPlugin()void 没有向 return 请求任何东西。

因此您的代码将如下所示:

pluginButton.Click += StartPlugin;

private void StartPlugin(object sender, EventArgs e)
{
    PluginPage plgp = new PluginPage();
    plgp.Show();
    plgp.Text = PlgTitle2;
}