此代码适用于单个选定项目:在顶部:
ContextMenuStrip menuStrip;
Run Code Online (Sandbox Code Playgroud)
然后在构造函数中:
menuStrip = new ContextMenuStrip();
menuStrip.ItemClicked += menuStrip_ItemClicked;
menuStrip.Items.Add("Cut");
menuStrip.Items.Add("Copy");
menuStrip.Items.Add("Paste");
Run Code Online (Sandbox Code Playgroud)
该menuStrip
itemclicked事件:
ListViewItem item;
private void menuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
if (e.ClickedItem.Text == "Copy")
{
Clipboard.SetText(item.SubItems[1].Text);
}
}
Run Code Online (Sandbox Code Playgroud)
然后ListView
鼠标单击事件:
private void lstDisplayHardware_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
item = lstDisplayHardware.GetItemAt(e.X, e.Y);
menuStrip.Show(lstDisplayHardware, e.Location);
}
}
Run Code Online (Sandbox Code Playgroud)
此代码适用于单个选定项目.例如,我单击项目中的项目ListView
,右键单击该项目并选择Copy
:将所选项目的子项目复制到剪贴板.
但现在我想为多项选择做同样的事情.
因此,如果我使用Ctrl +鼠标左键单击并选择4个项目并Copy
从上下文菜单中调用命令,我希望将4个所选项目文本的所有子项目复制到剪贴板中.
例如,我有这些项目:
丹尼你好世界
丹尼尔喜所有
dan rain今天
daniels阳光灿烂的日子
我选择了这些项目:
丹尼·
丹尼尔·
丹·
丹尼尔斯
然后右键单击并单击"复制".当我paste
在剪贴板的任何地方,我希望它显示:
你好世界
今天
所有的
雨都是
阳光灿烂的日子
所选项目的所有子项目的顺序和格式相同.
首先,您必须启用多选:
ListView1.MultiSelect = true;
Run Code Online (Sandbox Code Playgroud)
然后,您可以获得以下选定项目:
private void menuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
ListView.SelectedListViewItemCollection selectedItems =
ListView1.SelectedItems;
if (e.ClickedItem.Text == "Copy")
{
String text = "";
foreach ( ListViewItem item in selectedItems )
{
text += item.SubItems[1].Text;
}
Clipboard.SetText(text);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
private void listBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.C)
{
CopyListBox(listBox1);
}
}
public void CopyListBox(ListBox list)
{
StringBuilder sb = new StringBuilder();
foreach (string item in list.SelectedItems)
{
sb.AppendLine(item);
}
Clipboard.SetDataObject(sb.ToString());
}
Run Code Online (Sandbox Code Playgroud)
小智 5
对于ListView,不是ListBox代码将是:
private void listView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.C)
{
CopyListBox(listView1);
}
}
public void CopyListBox(ListView list)
{
StringBuilder sb = new StringBuilder();
foreach (var item in list.SelectedItems)
{
ListViewItem l = item as ListViewItem;
if (l != null)
foreach (ListViewItem.ListViewSubItem sub in l.SubItems)
sb.Append(sub.Text+"\t");
sb.AppendLine();
}
Clipboard.SetDataObject(sb.ToString());
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12211 次 |
最近记录: |