C# DataGridView - как включить вертикальную полосу прокрутки

DataGridView (форма) содержит достаточно строк, чтобы вертикальная полоса прокрутки отображалась. Но это не включено. Силдер для движения отсутствует, а кнопка вверх и кнопка вниз выделены серым цветом.

=> есть вертикальная полоса прокрутки, но она не включается.

пробовал:

  1. после заполнения DataGridView элемент управления обновляется.
  2. изменение размера всей панели.
  3. атрибут Frozen имеет значение false.
  4. Я щелчок в ячейку можно использовать клавиши вверх и вниз для прокрутки, но прокрутка не будет включена.

Если я изменяю размер элемента управления во время работы (DataGridView находится на Splitpanel), полоса прокрутки может использоваться e.g теперь включено.

5 ответов


попробуйте это:

1. один из ваших столбцов, вероятно, имеет замороженное свойство, установленное как True.

что должно быть False для всех столбцов.

2. Установите AutoSizeMode проблемного столбца в AllCells

3. mygrid.DockStyle = DockStyle.Заполнить


Set ScrollBar свойство datagridview является обоими.


та же проблема плюс некоторые обходные пути можно найти здесь: datagridview вертикальная полоса прокрутки не обновляется должным образом (ошибка формы?)
Это определенно кажется ошибкой winforms, которая появляется, например, когда DGV помещается внутри вкладки tabcontrol.


  1. вы должны закрепить заливку datagridview на панель
  2. Если у вас есть некоторые замороженные строки, убедитесь, что эти строки установлены после завершения ввода данных в gridview

если вы установили замороженную строку раньше, строка при добавлении будет принимать стиль по умолчанию первой строки, и все ваши строки gridview будут иметь опцию row.frozen = true. Вот почему вертикальный свиток не появляется.


у меня была аналогичная проблема с горизонтальной полосой прокрутки. Делать PerformLayout на сетке это не решило. Получается, что проблема в моем случае заключалась в том, что форма была отключена. У нас есть инфраструктура, которая отключает форму при загрузке, загружает кучу вещей асинхронно и в конце дает форма. По какой-то причине этого было достаточно, чтобы полоса прокрутки оставалась отключенной, когда форма была включена (и, как в вашем сценарии, изменение размера формы при запуске включило полосу прокрутки). Так что для меня решением был вызов PerformLayout решетки после благоприятной форме.