【问题标题】:c# controlling datagridview columns drag and drop operationc#控制datagridview列拖拽操作
【发布时间】:2010-08-09 07:59:14
【问题描述】:
我有一个 datagridview 表,我想在某些特定情况下禁用拖放。
例子:
我有 4 列名为 A、B、C、D。我将它们分为 2 组:A、B 和 C、D(对于用户来说,它们看起来像 4 个普通列)。现在用户拖动A或B列时,只能放在C之前。当他拖动C或D时,只能放在B之后。
我试图检测 ColumnDisplayIndexChanged 中的 DisplayIndex 值,但是这个事件被触发了多次,并且我得到了一个异常,即 DisplayIndex 正在被更改或……我当时无法更改它。
有什么办法可以做到吗?
提前致谢。
【问题讨论】:
标签:
c#
datagridview
drag-and-drop
【解决方案1】:
拖放以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 中的“拖放到列”进行检查。如果可以删除它,请发挥你的魔力,否则如果列组合不正确,则什么也不做。