【问题标题】:Dragging and dropping datagridview row on itself将datagridview行拖放到自身上
【发布时间】:2013-09-25 21:50:41
【问题描述】:

我最近试图在 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);
        }

    }

【问题讨论】:

    标签: c# winforms datagridview


    【解决方案1】:

    将datagridview2的AllowDrop属性设置为false。

    【讨论】:

      猜你喜欢
      • 2010-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-03
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多