简体   繁体   English

如何在上下文菜单项上放置事件?

[英]How can i put an event on a context menu item?

I work at a program which needs some tabs.I didn't want to put buttons to add/remove tabs, my idea was to add a context menu when i press right click but it gives me an error. 我在需要一些选项卡的程序上工作。我不想放按钮来添加/删除选项卡,我的想法是当我按右键时添加上下文菜单,但这给我一个错误。 This is the code: 这是代码:

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()
    {

    }

But the Add_tab_click method gives me an error: 但是Add_tab_click方法给我一个错误:

'Form1.Add_tab_click': not all code paths return a value 'Form1.Add_tab_click':并非所有代码路径都返回值

What this means? 这是什么意思

private EventHandler Add_tab_click()

The compiler is expecting Add_tab_click() to return an EventHandler because your method is marked as returning one (as opposed to void). 编译器期望Add_tab_click()返回一个EventHandler因为您的方法被标记为返回一个(而不是void)。 In this case however, the method SHOULD return void because the EventHandler delegate expects a method that takes two parameters (an object and EventArgs) and returns void. 但是,在这种情况下,该方法应该返回void,因为EventHandler委托期望一个带有两个参数(一个对象和EventArgs)的方法并返回void。 So you should change your code to: 因此,您应该将代码更改为:

private void Add_tab_click(object sender, EventArgs e)

and change this: add_tab.Click += new EventHandler (Add_tab_click()); 并更改为: add_tab.Click += new EventHandler (Add_tab_click());

to: 至:

add_tab.Click += Add_tab_click;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM