如何允许用户从列表框中复制项目并粘贴到windows窗体之外



我知道,对于数据网格,用户可以选择项目,复制它们,然后将它们粘贴到表单之外。有没有一种方法可以用列表框做到这一点?看起来你可以在列表框中选择多个项目,但如果你试图将选定的值粘贴到表单之外,它似乎并没有真正复制它。

当用户单击ctrl+c将项目放入剪贴板时,您可以捕获事件。

此代码适用于具有多选MultiSimple=true的列表框

private void ListBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.C)
{
System.Text.StringBuilder copy_buffer = new System.Text.StringBuilder();
foreach (object item in ListBox1.SelectedItems)
copy_buffer.AppendLine(item.ToString());
if (copy_buffer.Length > 0)
Clipboard.SetText(copy_buffer.ToString());
}
}

要通过Ctrl+C复制所选项目,请使用以下代码:

private void LstVehicles_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && (e.KeyCode == Keys.C))
{
Clipboard.SetText(this.yourListBoxName.SelectedItem.ToString());
}
}

这两个解决方案对我不起作用,只是点击listBox并生成一个名为的函数

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)

我把。。。

Clipboard.SetDataObject(this.listBox1.SelectedItem.ToString());

所以完整的解决方案是

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
Clipboard.SetDataObject(this.listBox1.SelectedItem.ToString());
}

从其中一个解决方案和一条评论中得到了一句话。谢谢

我只能在列表框中选择一行,我知道它不是最好的,但通过鼠标左键单击下面的代码复制所有列表框项目到剪贴板:

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
System.Text.StringBuilder copy_buffer = new System.Text.StringBuilder();
foreach (object item in listBox1.Items)
copy_buffer.AppendLine(item.ToString());
if (copy_buffer.Length > 0)
Clipboard.SetText(copy_buffer.ToString());
}

最新更新