C# Windows 应用程序中, 在 DataGridView 之间拖放文本






4.67/5 (7投票s)
本示例将演示如何将数据从一个 datagridview 拖放到另一个
引言
这是我的第一篇文章,我将解释如何使用拖放功能将数据从一个数据网格视图复制或移动到另一个数据网格视图。
背景
在阅读了各种网站上的大量文章后,我了解到使用拖放功能向 DataGridView
控件添加行或列很容易。但是,当我们必须将数据添加到单个单元格时,存在一个问题,因为在拖动数据时,我们无法获取单元格的 rowIndex
和 ColumnIndex
。因此,我们必须使用鼠标指针返回的 X 和 Y 坐标来确定。
Using the Code
您只需要处理三个主要事件。
CellMouseDown
事件,用于从要复制数据的DataGridView
(在我的例子中为dataGridView2
)。我们编写以下代码private void dataGridView2_CellMouseDown (object sender, DataGridViewCellMouseEventArgs e) { dataGridView2.DoDragDrop(dataGridView2.Rows [e.RowIndex].Cells[e.ColumnIndex].Value.ToString(), DragDropEffects.Copy); }
DragEnter
事件,用于将数据粘贴到的DataGridView
(在我的例子中为dataGridView1
)。private void dataGridView1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(typeof(System.String))) e.Effect = DragDropEffects.Copy; else e.Effect = DragDropEffects.None; }
- 最后,
DragDrop
事件,用于将数据粘贴到的DataGridView
(在我的例子中为dataGridView1
)。private void dataGridView1_DragDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(typeof(System.String))) { Point clientPoint = dataGridView1.PointToClient(new Point(e.X, e.Y)); dataGridView1.Rows[dataGridView1.HitTest(clientPoint.X, clientPoint.Y).RowIndex].Cells[dataGridView1.HitTest(clientPoint.X, clientPoint.Y).ColumnIndex].Value = (System.String)e.Data.GetData(typeof(System.String)); } }
同样,您也可以将拖放功能用于其他控件。
我希望它能帮助到您。
编码愉快!!!!!!!!!!!!!
祝你好运。
历史
- 2010年2月18日:初始发布