带复制粘贴的Listview

Zub*_*irg 11 c# listview copy-paste winforms

是否有一种简单的方法为列表视图添加复制粘贴,或者我应该切换到DataGridView?

我的应用程序有点像地址簿,它包含电子邮件,数字等,其中复制粘贴将是有用的.

Bre*_*ett 17

下面的示例将Ctrl-C作为copy命令的副本处理,并从所有选定的行复制第二列的值:

    private void resultsListView_KeyUp(object sender, KeyEventArgs e)
    {
        if (sender != resultsListView) return;

        if (e.Control && e.KeyCode == Keys.C)
            CopySelectedValuesToClipboard();
    }

    private void CopySelectedValuesToClipboard()
    {
        var builder = new StringBuilder();
        foreach (ListViewItem item in resultsListView.SelectedItems)
            builder.AppendLine(item.SubItems[1].Text);

        Clipboard.SetText(builder.ToString());
    }
Run Code Online (Sandbox Code Playgroud)

使用item.Text第一列和item.SubItems[n].Text其他列.

参考文献:

  1. 在C#中Ctrl + C和Ctrl + V的KeyChar是什么来获取密钥和正确的事件处理程序.
  2. 将ListView复制到VB.NET,C#和VB6中的剪贴板,以获取将ListView复制到剪贴板的完整示例.


Han*_*son 1

手动复制和粘贴并不是很难,只需放入一个事件处理程序KeyDown(或者可能KeyPress不记得了,但相当确定它是其中之一),然后通过查看e.KeyCode并检查是否为e.Control真来检查按下的键。如果它是其中之一xc或者v只是调用Clipboard.SetTextClipboard.GetText向剪贴板写入/读取剪贴板。有关该类的 MSDN 文档,
请参阅此处Clipboard

您还可以将带有“复制”和“粘贴”功能的上下文菜单添加到 ListView 中,以使其完整。