使用C#中的上下文菜单在运行时删除控件

亚历克斯·亚历克斯

我在tabControl内创建了一些自定义控件(按钮),该标签控件在运行时通过在其中拖动文件来包含FLP。当我右键单击按钮并从上下文菜单中选择“删除”时,我想删除按钮。我的问题是如何知道我右键单击要删除的按钮?

我如何创建按钮:

 public void tabControl1_DragDrop(object sender, DragEventArgs e)
    {
        string[] fileList = e.Data.GetData(DataFormats.FileDrop) as string[];

        foreach (string s in fileList)
        {
            var button = new Button();
            CustomControl custom_btn = new CustomControl(button, new Label { Text = file_name,  BackColor = Color.Red });
            button.Tag = path_app;

            FlowLayoutPanel selectedFLP = (FlowLayoutPanel)tabControl1.SelectedTab.Controls[0];
            selectedFLP.Controls.Add(custom_btn);

            ContextMenu cm2 = new ContextMenu();
            cm2.MenuItems.Add("Remove", new EventHandler(rmv_btn_click));
            custom_btn.ContextMenu = cm2;
        }
    }

我尝试删除按钮,但没有删除我选择的按钮。

 private void rmv_btn_click(object sender, System.EventArgs tab)
    {

        //flp_panel.Controls.Remove(sender as Button); - not working because the sender is actually the button "remove" from the context menu..
        foreach (Control X in flp_panel.Controls)
        {
            flp_panel.Controls.Remove(X);
        }
    }
Diryboy

您可以先声明一个方法:

private EventHandler handlerGetter( Button button )
{
    return ( object sender, EventArgs e ) =>
    {
        flp_panel.Controls.Remove(button); 
    };
}

然后将现有代码修改为:

cm2.MenuItems.Add("Remove", handlerGetter(custom_btn));

完毕。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C#中的运行时期间添加上下文菜单栏

来自分类Dev

C# 表单在运行时添加控件

来自分类Dev

什么是“运行时上下文”?

来自分类Dev

在实体框架中在运行时将新模型添加到现有上下文中

来自分类Dev

使用Java反射在运行时上下文中获取所有定义的变量(内部是Voodoo)

来自分类Dev

c#在运行时更改标签(控件)的位置

来自分类Dev

具有类名的查询上下文仅在运行时知道

来自分类Dev

具有类名的查询上下文仅在运行时知道

来自分类Dev

Emscripten:如何在运行时检测 webgl 上下文版本?

来自分类Dev

通过上下文菜单在终端中运行脚本(通过终端打开)?

来自分类Dev

无法使用Nautilus-Actions上下文菜单在选定文件上运行脚本

来自分类Dev

窗体运行时不显示上下文菜单项

来自分类Dev

窗体运行时不显示上下文菜单项

来自分类Dev

无法使上下文菜单在Extjs 4.2中工作

来自分类Dev

在运行时PictureBox控件中找不到图像属性C#

来自分类Dev

如何在运行时C#中清除表单控件

来自分类Dev

从上下文菜单中删除“使用GIMP打开”?

来自分类Dev

上下文菜单在右侧被剪裁

来自分类Dev

Spring上下文作为运行时依赖

来自分类Dev

在运行时C#中从List <Timer>中删除计时器

来自分类Dev

确定在运行时调用哪种方法而无需使用接口作为上下文(无Java8功能)

来自分类Dev

确定在运行时调用哪种方法而不使用用于上下文的接口(无Java8功能)

来自分类Dev

如何使用父控件的上下文菜单覆盖文本框上下文菜单?

来自分类Dev

带有插件样式系统的EF多上下文。如何在运行时应用迁移?

来自分类Dev

EFCore支架数据库并在运行时迁移到另一个上下文

来自分类Dev

作为脚本运行时,Node.js中“ this”的上下文是什么?

来自分类Dev

我们可以在运行时在 C# 中为运行时创建的控件创建多个事件吗

来自分类Dev

wxPython 在运行时向 ScrolledWindow 添加/删除控件

来自分类Dev

如何使用C#在运行时在MS Access中创建存储的查询

Related 相关文章

  1. 1

    在C#中的运行时期间添加上下文菜单栏

  2. 2

    C# 表单在运行时添加控件

  3. 3

    什么是“运行时上下文”?

  4. 4

    在实体框架中在运行时将新模型添加到现有上下文中

  5. 5

    使用Java反射在运行时上下文中获取所有定义的变量(内部是Voodoo)

  6. 6

    c#在运行时更改标签(控件)的位置

  7. 7

    具有类名的查询上下文仅在运行时知道

  8. 8

    具有类名的查询上下文仅在运行时知道

  9. 9

    Emscripten:如何在运行时检测 webgl 上下文版本?

  10. 10

    通过上下文菜单在终端中运行脚本(通过终端打开)?

  11. 11

    无法使用Nautilus-Actions上下文菜单在选定文件上运行脚本

  12. 12

    窗体运行时不显示上下文菜单项

  13. 13

    窗体运行时不显示上下文菜单项

  14. 14

    无法使上下文菜单在Extjs 4.2中工作

  15. 15

    在运行时PictureBox控件中找不到图像属性C#

  16. 16

    如何在运行时C#中清除表单控件

  17. 17

    从上下文菜单中删除“使用GIMP打开”?

  18. 18

    上下文菜单在右侧被剪裁

  19. 19

    Spring上下文作为运行时依赖

  20. 20

    在运行时C#中从List <Timer>中删除计时器

  21. 21

    确定在运行时调用哪种方法而无需使用接口作为上下文(无Java8功能)

  22. 22

    确定在运行时调用哪种方法而不使用用于上下文的接口(无Java8功能)

  23. 23

    如何使用父控件的上下文菜单覆盖文本框上下文菜单?

  24. 24

    带有插件样式系统的EF多上下文。如何在运行时应用迁移?

  25. 25

    EFCore支架数据库并在运行时迁移到另一个上下文

  26. 26

    作为脚本运行时,Node.js中“ this”的上下文是什么?

  27. 27

    我们可以在运行时在 C# 中为运行时创建的控件创建多个事件吗

  28. 28

    wxPython 在运行时向 ScrolledWindow 添加/删除控件

  29. 29

    如何使用C#在运行时在MS Access中创建存储的查询

热门标签

归档