【问题标题】:How to add a event handler to a ToolStripButton in C# code? [duplicate]如何在 C# 代码中向 ToolStripButton 添加事件处理程序? [复制]
【发布时间】:2015-07-06 14:40:29
【问题描述】:

又是我,这是我的 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() 遇到错误,错误是并非所有代码路径都返回值请帮忙! p>

【问题讨论】:

    标签: c# eventhandler toolstripbutton


    【解决方案1】:

    您可能打算这样做:

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

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

    【讨论】:

    • 非常有用,你也可以像 pluginButton.Click += new EventHandler(StartPlugin);
    • @Joshua708:我不禁觉得你在拖钓 :) 突然之间,你对人们的回答提出了有效的建议?
    • 哈哈,我研究了更多,发现
    【解决方案2】:

    您请求的是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;
    }
    

    【讨论】:

    • 无法将类型 void 隐式转换为 System.EventHandler,请帮助!
    • 请将pluginButton.Click += StartPlugin(); 更改为pluginButton.Click += StartPlugin;(去掉括号)。看看我的编辑。
    • 您还需要在第 3 行将其更改为 StartPlugin(object sender, EventArgs e)。
    【解决方案3】:
    private EventHandler StartPlugin()
    

    这一行,特别是“EventHandler”,表示您正在返回一个 EventHandler。您的代码不会这样做。要将 EventHandler 与按钮单击链接起来,您不仅需要使用一行,还需要一个返回(例如 return button1.Click;),因为如果我使用 return null;一旦你绑定它,它就会执行操作。

    【讨论】:

    • 我想通了,为了让需要帮助的人不那么模糊,我对其进行了编辑以解释更多
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    相关资源
    最近更新 更多