c#控制datagridview列的拖放操作

时间:2010-08-09 07:59:14

标签: c# datagridview drag-and-drop

我有一个datagridview表,我想在某些特定情况下禁用拖放。

示例:

我有4列名为A,B,C,D。我将它们分为两组:A,B和C,D(对于用户来说,它们看起来像4个普通列)。现在当用户拖动A列或B列时,他只能在C之前删除它。当他拖动C或D时,他只能在B之后删除它。

我试图检测ColumnDisplayIndexChanged中的DisplayIndex值,但是这个事件被多次触发,我得到了一个更改DisplayIndex的例子,或者我当时无法更改它。

有什么方法可以这样做吗? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

拖放从DataGridView::MouseDown事件开始。在那里,您可以记住拖动了哪个列

// Get the index of the item the mouse is below.
int columnIndexFromMouseDown = dataGridView1.HitTest(e.X, e.Y).ColumnIndex;
// Get the name
string columnDragName = dataGridView1.Columns[columnIndexFromMouseDown].Name;

记住列名称,并根据DataGridView::DragDrop中的“放置到列”进行检查。如果它可以被删除你的魔法,否则如果列组合不正确则什么都不做。