Одна из форм в моем приложении на C # .NET имеет несколько DataGridView, которые реализуют перетаскивание для перемещения строк. Перетаскивание в большинстве случаев работает правильно, но мне было трудно перевести DataGridViews в AutoScroll - когда строка перетаскивается в верхней или нижней части окна, чтобы прокрутить ее в этом направлении.
До сих пор я пытался реализовать версию этого решения. У меня есть класс ScrollingGridView, унаследованный от DataGridView, который реализует описанный таймер, и, согласно отладчику, таймер срабатывает соответствующим образом, но код таймера:
const int WM_VSCROLL = 277;
private static extern int SendMessage(IntPtr hWnd, int wMsg, IntPtr wParam, IntPtr lParam);
private void ScrollingGridViewTimerTick(object sender, EventArgs e)
{
SendMessage(Handle, WM_VSCROLL, (IntPtr)scrollDirectionInt, IntPtr.Zero);
}
, насколько я могу судить, ничего не делает, возможно, потому, что у меня есть несколько DataGridViews в форме. Я также пытался изменить свойство AutoScrollOffset, но это тоже ничего не делало. Исследование классов DataGridView и ScrollBar, по-видимому, не предполагает каких-либо других команд или функций, которые фактически будут выполнять прокрутку DataGridView. Может кто-нибудь помочь мне с функцией, которая фактически прокручивает DataGridView, или каким-либо другим способом решить проблему?