我想在3个Datagridview dgv1,dgv2和dgv3之间实现拖放。
当在dgv1和dgv2之间执行DragDrop时,它将是一个移动动作。源dgv中的元素将被删除并添加到目标dgv。
从dgv1或dgv2拖动到dgv3时,它只是一个副本。当dgv3是源时,反向,元素将不会添加到dgv1或dgv2。它们已经存在于dgv1或dgv2中。
目前删除源元素是在源的MouseDown事件中。我怎么能根据目的地dgv操纵动作?
private void _columnGrid_MouseDown(object sender, MouseEventArgs e)
{
if (e.Clicks == 1)
{
int rowIndex = _columnGrid.HitTest(e.X, e.Y).RowIndex;
if (rowIndex < 0)
return;
DragDropEffects dde1 = DoDragDrop(_columnGrid.Rows[rowIndex].DataBoundItem as ItemFormula, DragDropEffects.All);
if (dde1 == DragDropEffects.All)
{
_columnGrid.Rows.RemoveAt(rowIndex);
}
}
}
对于问题的第一部分,当dgv3是目的地时,我可以通过将DragDropEffect设置为dgv3中的Copy来实现。
private void _lineGrid_DragOver(object sender, DragEventArgs e)
{
//copy only
e.Effect = DragDropEffects.Copy;
}
当我想从dgv3拖放回dgv1或dgv2时,第二部分怎么样?
提前致谢。