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

本文关键字:ToolStripButton 添加 事件处理 程序 代码 | 更新日期: 2023-09-27 18:01:18

我又来了,这是我的插件解析器的另一个问题。对于我的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((处收到错误错误是并非所有代码路径都返回值请帮助!

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

您可能打算这样做:

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

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

您正在请求EventHandler,这意味着您必须返回EventHandler。在您的处理程序中没有return,因此会引发此错误。

您可以使用private void StartPlugin()void不要求返回任何内容。

所以你的代码看起来是这样的:

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

这一行,特别是"EventHandler",表示您正在返回一个EventHandler。您的代码无法执行此操作。要将EventHandler与click按钮链接,您不仅需要使用一行,还需要一个return(e.x return button1.click;(,因为如果我使用return null;它只会在您绑定后执行操作。