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

时间:2015-07-06 14:40:29

标签: c# eventhandler toolstripbutton

我再一次,我的 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;

}

所以代码非常基本,但我在私有EventHandler StartPlugin()时出错。错误是并非所有代码路径都返回值请帮助!

3 个答案:

答案 0 :(得分:2)

您可能打算这样做:

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

看起来您可能需要更多地了解委托和事件处理程序的工作方式。

答案 1 :(得分:1)

您正在申请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;
}

答案 2 :(得分:0)

private EventHandler StartPlugin()

这一行,特别是" EventHandler",意味着你要返回一个EventHandler。您的代码不会这样做。要将EventHandler与按钮单击链接,你不要只使用一行,你还需要一个返回,(e.x return button1.Click;)因为如果我使用return null;只要你把它绑定就行了。