Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在关联菜单项上放置事件?_C# - Fatal编程技术网

C# 如何在关联菜单项上放置事件?

C# 如何在关联菜单项上放置事件?,c#,C#,我在一个需要一些选项卡的程序中工作。我不想使用按钮来添加/删除选项卡,我的想法是在按下右键单击时添加上下文菜单,但它会给我一个错误。 代码如下: private void tabControl1_MouseDown(object sender, MouseEventArgs e) { if (context_add_remove_control < 1) { var add_tab = tab_options.MenuItem

我在一个需要一些选项卡的程序中工作。我不想使用按钮来添加/删除选项卡,我的想法是在按下右键单击时添加上下文菜单,但它会给我一个错误。 代码如下:

private void tabControl1_MouseDown(object sender, MouseEventArgs e)
    {
        if (context_add_remove_control < 1)
        {
            var add_tab = tab_options.MenuItems.Add("Add tab");
            var remove_tab = tab_options.MenuItems.Add("Remove tab");
            add_tab.Click += new EventHandler (Add_tab_click());
        }
        tabControl1.ContextMenu = tab_options;
    }

    private EventHandler Add_tab_click()
    {

    }
private void tabControl1\u MouseDown(对象发送方,MouseEventArgs e)
{
如果(上下文\u添加\u删除\u控件<1)
{
var add_tab=tab_options.MenuItems.add(“add tab”);
var remove_tab=tab_options.MenuItems.Add(“remove tab”);
add_tab.Click+=新事件处理程序(add_tab_Click());
}
tabControl1.ContextMenu=tab_选项;
}
私有事件处理程序添加选项卡单击()
{
}
但是添加选项卡单击方法给了我一个错误:

“Form1.Add_tab_click”:并非所有代码路径都返回值


这意味着什么?

private EventHandler Add\u tab\u click()

编译器希望Add_tab_click()返回一个
EventHandler
,因为您的方法被标记为返回一个(与void相反)。但是,在这种情况下,该方法应该返回void,因为委托需要一个接受两个参数(object和EventArgs)并返回void的方法。因此,您应该将代码更改为:

private void Add\u选项卡\u单击(对象发送者,事件参数)

改变这一点:
add_tab.Click+=neweventhandler(add_tab_Click())

致:


add_tab.Click+=add_tab_Click

错误消息表明,即使方法签名指示返回类型为
EventHandler
的返回值,您也没有从
Add\u tab\u click()
返回值。您声明了一个期望返回EventHandler的函数。如果这应该是一个事件,那么它被宣布为错误的。如果它应该是一个函数,它需要返回一个EventHandler…好的,但是我如何解决这个问题呢?粘贴时应该解决格式问题。私有事件事件处理程序testEvent;public Form1(){InitializeComponent();testEvent+=Form1_testEvent;}private void Form1_testEvent(对象发送方,事件参数e){抛出新的NotImplementedException();}
Add\u选项卡\u单击
也应该像
EventHandler
委托一样接受
objectsender
EventArgs e
参数。啊,是的。已编辑。现在
add_tab.Click+=add_tab_Click
给出此错误:无法将类型void隐式转换为系统事件hadler您是否有
添加选项卡单击()
(带括号)或
添加选项卡单击
?谢谢。我从
添加选项卡中删除了方法标记。单击+=添加选项卡单击()
添加选项卡。单击+=添加选项卡\u单击