C# 将datagridview行拖放到自身上

C# 将datagridview行拖放到自身上,c#,winforms,datagridview,C#,Winforms,Datagridview,我最近试图找到一些代码,在WinForms应用程序中将一行从一个datagridview拖放到另一个datagridview。我最终找到了有效的代码,但有一个小问题。当我在dataGridView2中选择一行以拖动到dataGridView1时,如果我不小心并且过于草率,我会意外地将该行拖动到dataGridView2中的另一行。它就像消失在dataGridView2的另一行中一样。是否有一种方法可以检测到,如果要拖动的行不在dataGridView1中,则不允许将其删除 dataGridVi

我最近试图找到一些代码,在WinForms应用程序中将一行从一个datagridview拖放到另一个datagridview。我最终找到了有效的代码,但有一个小问题。当我在dataGridView2中选择一行以拖动到dataGridView1时,如果我不小心并且过于草率,我会意外地将该行拖动到dataGridView2中的另一行。它就像消失在dataGridView2的另一行中一样。是否有一种方法可以检测到,如果要拖动的行不在dataGridView1中,则不允许将其删除

 dataGridView2.MouseMove += new MouseEventHandler(dataGridView2_MouseMove);
 dataGridView1.DragEnter += new DragEventHandler(dataGridView1_DragEnter);
 dataGridView1.DragDrop += new DragEventHandler(dataGridView1_DragDrop);

 void dataGridView1_DragDrop(object sender, DragEventArgs e)
    {
        DataGridViewRow row = e.Data.GetData(typeof(DataGridViewRow)) as DataGridViewRow;
        if (row != null)
        {
            DataGridViewRow newrow = row.Clone() as DataGridViewRow;
            for (int i = 0; i < newrow.Cells.Count; i++)
            {
                newrow.Cells[i].Value = row.Cells[i].Value;
            }

            this.dataGridView1.Rows.Add(newrow);

        }
    }

    void dataGridView1_DragEnter(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(typeof(DataGridViewRow)))
        {
            e.Effect = DragDropEffects.Copy;
        }
    }

    void dataGridView2_MouseMove(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            this.dataGridView2.DoDragDrop(this.dataGridView2.CurrentRow, DragDropEffects.All);
            this.dataGridView2.Rows.Remove(this.dataGridView2.CurrentRow);
        }

    }
dataGridView2.MouseMove+=新的MouseEventHandler(dataGridView2\u MouseMove);
dataGridView1.DragEnter+=新的DragEventHandler(dataGridView1\u DragEnter);
dataGridView1.DragDrop+=新的DragEventHandler(dataGridView1_DragDrop);
void dataGridView1_DragDrop(对象发送方,DragEventArgs e)
{
DataGridViewRow=e.Data.GetData(typeof(DataGridViewRow))作为DataGridViewRow;
如果(行!=null)
{
DataGridViewRow newrow=row.Clone()作为DataGridViewRow;
对于(int i=0;i
将datagridview2的AllowDrop属性设置为false