Переместить столбец в DataGridView, не нажимая на него дважды

#c# #datagridview #datagridviewcolumn

#c# #просмотр сетки данных #столбец datagridviewcolumn

Вопрос:

Обычно, чтобы переместить столбец в a DataGridView , вы просто щелкаете и перетаскиваете. Однако, если вы прокручиваете непосредственно перед этой операцией (что довольно часто встречается при перемещении столбцов), вы должны щелкнуть по столбцу перед щелчком и перетаскиванием. Я подумал, что это как-то связано с DataGridView потерей фокуса, поэтому я прослушал Scroll события типа EndScroll с горизонтальной полосы прокрутки и вызвал Focus() DataGridView там. Это не сработало. Кто-нибудь знает, как я могу перемещать столбцы без дополнительного щелчка в этом случае?

Комментарии:

1. Кто-нибудь? Любые комментарии, которые могут подтолкнуть меня в правильном направлении?

Ответ №1:

Это похоже на WinForms ошибку.

Декомпиляция System.Windows.Forms помогла мне найти решение: объявить DataGridView дочерний класс и переопределить OnScroll функцию таким образом :

 protected override void OnScroll(ScrollEventArgs e)
{
    base.OnScroll(e);
    base.OnMouseUp(new MouseEventArgs(MouseButtons.Left, 1, 0, 0, 0));
}