c # управление перетаскиванием столбцов таблицы данных - PullRequest
1 голос
/ 09 августа 2010

У меня есть таблица просмотра данных, и я хочу отключить перетаскивание в некоторых конкретных ситуациях.

Пример:

У меня есть 4 столбца с именами A, B, C, D.Я делю их на 2 группы: A, B и C, D (для пользователя они выглядят как 4 обычных столбца).Теперь, когда пользователь перетаскивает столбец A или B, он может отбросить его только до C. Когда он перетаскивает C или D, он может отбрасывать его только после B.

Я пытался определить значения DisplayIndex в ColumnDisplayIndexChanged.но это событие запускается несколько раз, и я получил исключение, что DisplayIndex изменяется или что-то еще, и я не могу изменить его в этот момент.

Есть ли способ сделать что-то подобное?
Спасибозаранее.

1 Ответ

0 голосов
/ 22 марта 2011

Перетаскивание начинается с события 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;

Запомните имя столбца и сравните его с «drop to column» в DataGridView::DragDrop. Если его можно отбросить, творите магию, иначе ничего не делайте, если комбинация столбцов неправильная.

...