实现DataGridView的整行拖放

    技术2022-05-11  79

    本来应该是作为旧帖“使DataGridView支持数据拖放(DragDrop)”中一个关于DataGridView整行拖放的问题帖的回复,但不知为什么提交回复总是报错,怕自己事后忘记了回复,干脆作新帖发布。那位回复的朋友说使DataGridView支持数据拖放 是"地球人都知道的",这个确实如此,日光之下就没有新鲜事。

    DataGridView的整行拖放其实也不难实现,这里我简单做了一个测试,实现两个DataGridview之间的整行拖放。因为还算简单,我把思路讲解一下,代码也不会全部贴上来了。

    通过DataGridView的SelectedRows属性,可以得到DataGridView所有被选择的行,这一点应该也是地球人都知道的,那么在目标控件的DragDrop事件中判断源DataGridView的SelectedRows是否存在被选择的行,然后遍历取出所有被选择行的数据并做相应处理就可以了。这里只贴出目的控件的DragDrop事件代码,全部代码。 

    private   void  dataGridView2_DragDrop( object  sender, DragEventArgs e)         {                        if (e.Data != null)                {                     //在源DataGridVeiw的MouseMove事件中调用DoDragDrop,直接把源DataGridView作为参数传递过来                     //这里取出Data属性里面的传递过来的DataGridview进行操作                    DataGridView aa = (DataGridView)e.Data.GetData(typeof(DataGridView));                     //遍历源DataGridView的SelectedRows,得到每一个被选中的行的索引                    foreach (DataGridViewRow dgr in dataGridView1.SelectedRows)                    {                        Class1 cc = new Class1();                         //通过行的索引从源DataGridview绑定的数据源中得到相应的数据                        cc.Bbb = (bindingSource1.List[dgr.Index] as Class1).Bbb;                        cc.Bbb1 = (bindingSource1.List[dgr.Index] as Class1).Bbb1;                         //添加到目的DataGridView所绑定的数据源                        bindingSource2.Add(cc);                    }                             }            }                 }

    代码比较粗糙,仅仅只是说明一下实现思路。 


    最新回复(0)