65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.67/5 (7投票s)

2010年2月18日

CPOL

1分钟阅读

viewsIcon

53897

downloadIcon

3529

本示例将演示如何将数据从一个 datagridview 拖放到另一个

引言

这是我的第一篇文章,我将解释如何使用拖放功能将数据从一个数据网格视图复制或移动到另一个数据网格视图。

背景

在阅读了各种网站上的大量文章后,我了解到使用拖放功能向 DataGridView 控件添加行或列很容易。但是,当我们必须将数据添加到单个单元格时,存在一个问题,因为在拖动数据时,我们无法获取单元格的 rowIndex ColumnIndex。因此,我们必须使用鼠标指针返回的 X 和 Y 坐标来确定。

Using the Code

您只需要处理三个主要事件。

  1. CellMouseDown 事件,用于从要复制数据的 DataGridView (在我的例子中为 dataGridView2 )。我们编写以下代码
     private void dataGridView2_CellMouseDown
    	(object sender, DataGridViewCellMouseEventArgs e)
     {
      dataGridView2.DoDragDrop(dataGridView2.Rows
    	[e.RowIndex].Cells[e.ColumnIndex].Value.ToString(),
     DragDropEffects.Copy);
               
     }
  2. 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;
            } 
  3. 最后,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日:初始发布
© . All rights reserved.