如何仅在选择上下文菜单"Copy"选项时执行此操作?



在构造函数i做过:

m = new ContextMenu();
m.MenuItems.Add(new MenuItem("Cut"));
m.MenuItems.Add(new MenuItem("Copy"));
m.MenuItems.Add(new MenuItem("Paste"));

然后我有一个listView鼠标单击事件:

private void lstDisplayHardware_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Right)
            {
                ListViewItem item = lstDisplayHardware.GetItemAt(e.X, e.Y);

                if (item != null)
                {
                    item.Selected = true;
                    m.MenuItems.Add(new MenuItem(string.Format("Do something to row {0}", item.Position.ToString())));
                    Clipboard.SetText(item.SubItems[1].Text);
                }
                m.Show(lstDisplayHardware, new Point(e.X, e.Y));
            }
        }

当我单击ListView的项目时,然后单击右键单击它正在选择项目subitem文本并将其复制到剪贴板。

但是,当我右键单击时,它也显示上下文选项剪切粘贴。

我只想在单击"复制"选项时进行右键单击时,它将其复制到剪贴板。

我知道也许我需要使用ContextMenustrip并为其创建单击事件,但是ContextMenUferip的单击事件将不会与ListView鼠标单击事件连接。

每个控件都有ContextMenu属性。尝试在lstDisplayHardware上设置该属性以指向您的上下文菜单。

m = new ContextMenu();
m.MenuItems.Add(new MenuItem("Cut"));
m.MenuItems.Add(new MenuItem("Copy"));
m.MenuItems.Add(new MenuItem("Paste"));
lstDisplayHardware.ContextMenu = m;

当然,您想在InitializeCompnents();被调用后要这样做。

最新更新