【发布时间】:2009-10-06 19:53:29
【问题描述】:
我需要能够从一个应用程序中复制一个或多个名称(使用正常的复制命令),然后能够双击 DataGridView 中的文本单元格以将数据粘贴到网格单元格中。关于如何做到这一点的任何想法?我正在尝试尽量减少此功能的键盘使用。
【问题讨论】:
-
如果回答能帮助您解决问题,请将其标记为已接受。
标签: c# datagridview copy paste
我需要能够从一个应用程序中复制一个或多个名称(使用正常的复制命令),然后能够双击 DataGridView 中的文本单元格以将数据粘贴到网格单元格中。关于如何做到这一点的任何想法?我正在尝试尽量减少此功能的键盘使用。
【问题讨论】:
标签: c# datagridview copy paste
这实际上比您想象的要容易。
在 DataGridView 中创建一个 CellDoubleClick 事件,并在其中放入如下代码:
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) {
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = Clipboard.GetText();
}
【讨论】:
您应该为单元格单击事件附加一个事件处理程序,并将单元格中的文本替换为Clipboard.GetText() 中的数据。
【讨论】:
我写这个是为了复制一个泛型:
DataGridViewSelectedRowCollection dtSeleccionados = dataGrid.SelectedRows;
DataGridViewCellCollection dtCells;
String row;
String strCopiado = "";
for (int i = dtSeleccionados.Count - 1; i >= 0; i--)
{
dtCells = dtSeleccionados[i].Cells;
row = "";
for (int j = 0; j < dtCells.Count; j++)
{
row = row + dtCells[j].Value.ToString() + (((j + 1) == dtCells.Count) ? "" : "\t");
}
strCopiado = strCopiado + row + "\n";
}
try
{
Clipboard.SetText(strCopiado);
}
catch (ArgumentNullException ex)
{
Console.Write(ex.ToString());
}
【讨论】: