Горизонтальная полоса прокрутки не видна в DataGridView
У меня есть форма DataGridView
on Window, которая заполняется 30 столбцами и тысячами строк.
ScrollBars
свойство имеет значение Both
, но горизонтальная полоса прокрутки не видна. даже я не могу прокручивать клавишей со стрелкой с клавиатуры.
Я попробовал это, установив свойство ScrollBars
в Horizontal
, но это не имеет никакого значения.
Любые предложения, пожалуйста?
Спасибо
Ответы
Ответ 1
Ну, ребята, его разобрали.
Я отвечаю на свой вопрос; это может помочь кому-то в будущем.
один из столбцов имеет свойство Frozen
, заданное как True
. который должен быть false
для всех столбцов.
Теперь ScrollBar работает абсолютно нормально для меня.
Приветствия
![enter image description here]()
Ответ 2
Я знаю, что это уже было разрешено, но я столкнулся с другой причиной, почему это может произойти, поэтому я подумал, что добавлю его в качестве ответа, если у кого-то будет такая же проблема.
Если ваша форма имеет DataGridView, который стыкуется, чтобы заполнить форму, а в форме также есть строка состояния, тогда в зависимости от того, какой заказ они создаются, строка состояния может скрывать панель прокрутки DataGridView. Чтобы исправить это, щелкните правой кнопкой мыши на DataGridView и выберите "Привести к фронту".
Ответ 3
У меня была эта раздражающая проблема. Я уже создал DataGridView в моей форме и задаю все параметры привязки данных и свойств в файле .CS.
Я просто прокомментировал строку в моем коде за файлом (.cs) i.e.
gvTblContent.AutoSize = true;
Вам не нужно устанавливать свойство AutoSize
, по умолчанию будут предоставлены горизонтальные и вертикальные полосы прокрутки, в противном случае вы можете использовать:
gvTblContent.ScrollBars = ScrollBars.Both;
Ответ 4
Док-станция. Заполнение DGV немного глючит.
Это происходит, когда у вас несколько стыковочных панелей, панелей инструментов и т.д.
Более часто, когда вы создаете свои столбцы во время выполнения.
Элемент управления считается более широким, чем его контейнер, и горизонтальная полоса прокрутки не появляется.
Замороженные, автоматические, brint передние и другие упомянутые средства защиты не всегда работают.
Наиболее надежным решением является Dock.Left и установка ширины DGV во время выполнения.
Таким образом, DGV не путает насчет того, насколько он широк.
Ответ 5
Когда я столкнулся с этой раздражающей проблемой, это было связано с свойством AutoSizeColumnsMode
DGV, которое было установлено на Fill
Я исправил это, изменив это свойство на AllCells
, но любое другое значение будет работать. Он работает, даже если DGV состыкована, и у меня есть несколько пристыкованных панелей, а первая колонка - Frozen.
Ответ 6
У меня была аналогичная проблема. Что я сделал, проверьте каждый из столбцов Datagrid и установите Frozen на "false". Надеюсь, это поможет.
Ответ 7
Я также встречаю эту проблему. Это глупая ситуация в моем случае.
Пожалуйста, проверьте положение/размер DataGridView вне зависимости от формы.
Ответ 8
У меня была та же проблема, и я обнаружил, что мой dataGridView был немного больше, чем форма, в которой она была. Я скорректировал размер, чтобы соответствовать форме, и это сработало!
Надеюсь, это поможет!
Ответ 9
В моем случае я просто использовал ANCHOR Top, Bottom, Left, Right вместо DOCK Fill.
Попробуйте.
Ответ 10
Несколько столбцов show/hide на моей стороне вызывали ту же проблему. Пришлось добавить
dataGridView1.ScrollBars = ScrollBars.Both; после обработки всех столбцов и строк в datagridview
Ничего из вышеперечисленного не помогло до этого
1. Без замороженных столбцов
2. Нагрузка на форму имеет dataGridView1.ScrollBars = ScrollBars.Both;
3. Нет строки состояния
Ответ 11
У меня тоже была эта проблема в VS2015 на winform.
У winform есть таблица, разбитая на 4 строки, 1 столбец. В строки я помещаю панели для размещения других элементов управления, кроме строки DataGrid, которая находится в последней строке. DataGrid устанавливается с док-станцией для заполнения. Форма также имеет строку состояния внизу, для будущего использования.
Я обнаружил, что строка состояния блокировала полосу прокрутки, как упоминалось ранее.
Я добавил еще одну строку в макет таблицы, но это будет отображать большое пустое место внизу формы как во время выполнения, так и в дизайне. Изменение размера формы также не разрешилось. Я попытался установить высоту строки в макете таблицы, но это не сработало. Я пробовал 1 пиксель, 5 пикселей и т.д. Никаких изменений. В конце концов я сдался и удалил строку состояния, ничего не использовал для чего-либо.
Ответ 12
У меня был DataGridView, сидящий внутри ячейки TableLayoutPanel, и ни одна полоса прокрутки не показывалась в DataGridView. Я думаю, что размер DataGridView также не управлялся должным образом, когда DataGridView состыковался, чтобы заполнить ячейку TableLayoutPanel. У меня не было замороженных столбцов.
Я смог его исправить, разместив DataGridView внутри Panel и установив AutoScroll = true на панели, чтобы позволить панели управлять прокруткой. Я состыковался с панелью, чтобы заполнить ячейку TableLayoutPanel, и состыковал DataGridView, чтобы заполнить панель.
Ответ 13
В моем случае Полоса прокрутки не появлялась до тех пор, пока я не понял состояние замороженного столбца и только для чтения. Я сделал замороженные столбцы для столбца только для чтения, а также один редактируемый столбец в моем dataGridView
. Когда я удаляю frozen=false
для редактируемого столбца, появляется горизонтальная полоса.
Ответ 14
Я установил несколько первых замороженных строк в true (H_bar). Но я установил frozen = true для невидимого столбца (column.visible = false), он исчез.
Ответ 15
У меня была такая же проблема с DataGridView внутри tableLayoutPanel.
Ничто из перечисленного не помогло мне.
Оказывается, столбец в таблицеLayoutPanel, в котором установлен DataGridView, имеет значение AutoSize.
Решение состоит в том, чтобы установить столбец tableLayoutPanel в фактическое значение или процент.
Ответ 16
Все ваши замороженные столбцы должны соответствовать форме. В противном случае горизонтальная полоса прокрутки не отображается. Если горизонтальная полоса прокрутки отсутствует, сделайте вашу форму шире, пока не увидите свое последнее замороженное поле, а затем появится окно горизонтальной полосы прокрутки.
Ответ 17
У меня была похожая проблема, не из-за свойства frozen
, но, скорее всего, из-за ошибок DataGridView
, после того, как я добавил некоторые строки программно. Прочитав этот ответ на другой вопрос, который я решил с помощью:
dgv.PerformLayout()
после добавления этих строк, незадолго до того, как показывалось dgv
.