如何使用contextmenu copy将listview子项文本复制到剪贴板?

时间:2015-05-12 19:45:52

标签: c# .net winforms

private void lstDisplayHardware_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Right)
            {
                ListViewItem item = lstDisplayHardware.GetItemAt(e.X, e.Y);
                ContextMenu m = new ContextMenu();
                m.MenuItems.Add(new MenuItem("Cut"));
                m.MenuItems.Add(new MenuItem("Copy"));
                m.MenuItems.Add(new MenuItem("Paste"));

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

lstDisplayHardware是ListView控件。 当我右键单击时,它不会将数据复制到剪贴板。

我想要做的是当我点击/选择“复制”时,它会将子项目文本复制到剪贴板。

现在,它根本不会将文本复制到剪贴板。

2 个答案:

答案 0 :(得分:0)

为此,您需要处理菜单项点击:

MenuItem miCopy = new MenuItem();
miCopy.Click += miCopy_Click;

void miCopy_Click(object sender, EventArgs e)
{
    //what you want to do  
}
 ContextMenu m = new ContextMenu();
m.MenuItems.Add(miCopy);

答案 1 :(得分:0)

我不认为Clipboard.SetData就是你想要的。

尝试使用Clipboard.SetText(item.SubItems [1] .Text);