【问题标题】:Copy and paste into a DataGridView cell (C#)复制并粘贴到 DataGridView 单元格 (C#)
【发布时间】:2009-10-06 19:53:29
【问题描述】:

我需要能够从一个应用程序中复制一个或多个名称(使用正常的复制命令),然后能够双击 DataGridView 中的文本单元格以将数据粘贴到网格单元格中。关于如何做到这一点的任何想法?我正在尝试尽量减少此功能的键盘使用。

【问题讨论】:

  • 如果回答能帮助您解决问题,请将其标记为已接受。

标签: c# datagridview copy paste


【解决方案1】:

这实际上比您想象的要容易。

在 DataGridView 中创建一个 CellDoubleClick 事件,并在其中放入如下代码:

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) {
   dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = Clipboard.GetText();
}

【讨论】:

  • 这就是我所需要的。谢谢一百万。
  • 这是完成复制和粘贴的最简单方法。但是无论如何我可以启用使用右键单击然后粘贴到datagridview。
【解决方案2】:

您应该为单元格单击事件附加一个事件处理程序,并将单元格中的文本替换为Clipboard.GetText() 中的数据。

【讨论】:

    【解决方案3】:

    我写这个是为了复制一个泛型:

            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());
            }
    

    【讨论】: