我有一个datagridview表,我想在某些特定情况下禁用拖放。
示例:
我有4列名为A,B,C,D。我将它们分为两组:A,B和C,D(对于用户来说,它们看起来像4个普通列)。现在当用户拖动A列或B列时,他只能在C之前删除它。当他拖动C或D时,他只能在B之后删除它。
我试图检测ColumnDisplayIndexChanged中的DisplayIndex值,但是这个事件被多次触发,我得到了一个更改DisplayIndex的例子,或者我当时无法更改它。
有什么方法可以这样做吗? 提前谢谢。
答案 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
中的“放置到列”进行检查。如果它可以被删除你的魔法,否则如果列组合不正确则什么都不做。