0

又是我,这是我的c# browser的插件解析器的另一个问题,我正在尝试添加一个事件处理程序,以使其在您点击插件按钮时执行某些操作。我必须在代码中执行此操作的原因是因为它是从文件中加载插件,并且它们不是硬编码的。这是我的代码,如果你看到它,它看起来和上一个很熟悉

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()处遇到错误错误不是所有代码路径都返回值请帮助!

4

3 回答 3

2

您可能打算这样做:

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

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

于 2015-07-06T14:44:04.250 回答
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;
}
于 2015-07-06T14:44:29.170 回答
0
private EventHandler StartPlugin()

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

于 2015-07-06T14:42:06.833 回答