Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
DataGridView строки, столбцы и заголовки могут менять размер в результате множества различных ситуаций. В следующей таблице показаны эти случаи.
Происшествие | Описание |
---|---|
Изменение размера пользователя | Пользователи могут вносить корректировки размера, перетаскивая или дважды щелкнув разделители строк, столбцов или заголовков. |
Управление изменением размера | В режиме заливки столбцов ширина столбца изменяется при изменении ширины элемента управления; Например, когда элемент управления закреплен к родительской форме, а пользователь изменяет размер формы. |
Изменение значения ячейки | В режимах автоматического изменения размера на основе содержимого размеры изменяются, чтобы соответствовать новым значениям отображения. |
Вызов метода | Изменение размера на основе программно управляемого содержимого позволяет вносить оппортунистические корректировки размера во время вызова метода, ориентируясь на значения ячеек. |
Настройка свойства | Можно также задать определенные значения высоты и ширины. |
По умолчанию изменение размера пользователем разрешено, автоматическое изменение размера отключено, а значения ячеек, которые шире своих столбцов, обрезаются.
В следующей таблице показаны сценарии, которые можно использовать для настройки поведения по умолчанию или использования определенных параметров размера для достижения конкретных эффектов.
Сценарий | Внедрение |
---|---|
Используйте режим заливки столбцов для отображения данных аналогичного размера в относительно небольшом количестве столбцов, которые занимают всю ширину элемента управления без отображения горизонтальной полосы прокрутки. | Задайте для свойства AutoSizeColumnsMode значение Fill. |
Используйте режим заливки столбцов с отображаемыми значениями различных размеров. | Задайте для свойства AutoSizeColumnsMode значение Fill. Инициализировать относительные ширины столбцов можно, задав свойства столбца FillWeight или вызвав метод AutoResizeColumns элемента управления после его заполнения данными. |
Используйте режим заливки столбцов со значениями различной важности. | Задайте для свойства AutoSizeColumnsMode значение Fill. Задайте большие значения MinimumWidth для столбцов, которые всегда должны отображать некоторые данные или использовать параметр размера, отличный от режима заполнения для определенных столбцов. |
Используйте режим заливки столбцов, чтобы избежать отображения фона элемента управления. | Задайте для свойства AutoSizeMode последнего столбца значение Fill и используйте другие параметры размера для других столбцов. Если другие столбцы используют слишком много свободного места, задайте свойство MinimumWidth последнего столбца. |
Отображение столбца фиксированной ширины, например значка или столбца идентификатора. | Задайте AutoSizeMode значение None для столбца и Resizable значение False для столбца. Инициализировать его ширину можно, задав свойство Width или вызвав метод AutoResizeColumn после заполнения элемента управления данными. |
Автоматически настраивайте размеры при изменении содержимого ячейки, чтобы избежать вырезки и оптимизировать использование пространства. | Задайте для свойства автоматического размера значение, представляющее режим изменения размера на основе содержимого. Чтобы избежать штрафа на производительность при работе с большими объемами данных, используйте режим изменения размера, который вычисляет только отображаемые строки. |
Настройте размеры, чтобы соответствовать значениям в отображаемых строках, чтобы избежать штрафов за производительность при работе со многими строками. | Используйте соответствующие значения перечисления режима изменения размера при автоматическом или программном изменении размера. Чтобы настроить размеры для соответствия значений в недавно отображаемых строках во время прокрутки, вызовите метод изменения размера в обработчике событий Scroll. Чтобы настроить изменение размера пользователем так, чтобы только значения в отображаемых строках определяли новые размеры, вызовите метод настройки размера в обработчике события RowDividerDoubleClick или ColumnDividerDoubleClick. |
Изменяйте размеры так, чтобы они соответствовали содержимому ячейки только в определенные моменты, чтобы избежать снижения производительности или позволить пользователям изменять размер. | Вызовите метод изменения размера на основе содержимого в обработчике событий. Например, используйте событие DataBindingComplete для инициализации размеров после привязки, а событие CellValidated или CellValueChanged — для корректировки размеров, чтобы компенсировать правки пользователя или изменения в связанном источнике данных. |
Настройте высоту строк для содержимого многострочной ячейки. | Убедитесь, что ширина столбцов подходит для отображения абзацев текста и использования автоматического или программного размера строк на основе содержимого для настройки высоты. Также убедитесь, что ячейки с многострочным содержимым отображаются с использованием стиля ячейки WrapMode и значения True. Как правило, вы будете использовать режим автоматического изменения размера столбцов для поддержания ширины столбцов или настройки их определенной ширины перед настройкой высоты строк. |
Изменение размера с помощью мыши
По умолчанию пользователи могут изменять размер строк, столбцов и заголовков, которые не используют режим автоматического изменения размера на основе значений ячеек. Чтобы запретить пользователям изменять размер с помощью других режимов, таких как режим заполнения столбцов, задайте одно или несколько следующих свойств DataGridView:
Вы также можете запретить пользователям изменять размер отдельных строк или столбцов, задав их свойства Resizable. По умолчанию значение свойства Resizable основано на значении свойства AllowUserToResizeColumns столбцов и значении свойства AllowUserToResizeRows для строк. Если же явно установить Resizable значение как True или False, то указанное значение переопределит управляющее значение для этой строки или этого столбца. Установите Resizable на NotSet, чтобы восстановить наследование.
Так как NotSet восстанавливает наследование значений, свойство Resizable никогда не вернет значение NotSet, если строка или столбец не добавлена в элемент управления DataGridView. Если необходимо определить, наследуется ли значение свойства Resizable строки или столбца, изучите его свойство State. Если значение State содержит флаг ResizableSet, значение свойства Resizable не наследуется.
Автоматическое изменение размера
В элементе управления DataGridView существует два типа автоматического изменения размера: режим заливки столбцов и автоматическое изменение размера на основе содержимого.
Режим заливки столбцов приводит к тому, что видимые столбцы элемента управления заполняют ширину области отображения элемента управления. Дополнительные сведения об этом режиме см. в режиме заливки столбцов в элементе управления DataGridView Windows Forms.
Вы также можете настроить строки, столбцы и заголовки, чтобы автоматически настраивать их размеры, чтобы соответствовать их содержимому ячейки. В этом случае изменение размера происходит при изменении содержимого ячейки.
Замечание
Если вы сохраняете значения ячеек в пользовательском кэше данных с помощью виртуального режима, автоматическое изменение размера происходит, когда пользователь изменяет значение ячейки, но не возникает при изменении кэшированного значения за пределами обработчика событий CellValuePushed. В этом случае вызовите метод UpdateCellValue, чтобы принудительно обновить отображение ячейки и применить текущие режимы автоматического изменения размера.
Если автоматическое изменение размера на основе содержимого включено только для одного из измерений — то есть для строк, но не для столбцов, или для столбцов, но не для строк — и WrapMode также включен, то изменение размера происходит также при изменении другого измерения. Например, если строки, но не столбцы, настроены для автоматического изменения размера и WrapMode включен, пользователи могут перетаскивать разделители столбцов, чтобы изменить ширину столбца, а высота строк будет автоматически подстраиваться так, чтобы содержимое ячеек по-прежнему отображалось полностью.
Если вы настраиваете как строки, так и столбцы для автоматического изменения размера на основе содержимого и WrapMode включен, элемент управления DataGridView будет корректировать размеры при изменении содержимого ячейки и использовать идеальное соотношение высоты к ширине ячейки при расчете новых размеров.
Чтобы настроить режим масштабирования для заголовков и строк, а также для столбцов, которые не переопределяют значение контроля, задайте одно или несколько следующих свойств DataGridView:
Чтобы переопределить режим размера столбца элемента управления для отдельного столбца, задайте для свойства AutoSizeMode значение, отличное от NotSet. Режим изменения размера столбца фактически определяется его свойством InheritedAutoSizeMode. Значение этого свойства основано на значении свойства AutoSizeMode столбца, если это значение не NotSet, в таком случае наследуется значение AutoSizeColumnsMode элемента управления.
Используйте автоматическое изменение размера на основе содержимого с осторожностью при работе с большими объемами данных. Чтобы избежать штрафов за производительность, используйте режимы автоматического изменения размера, которые вычисляют размеры только на основе отображаемых строк, а не анализа каждой строки в элементе управления. Для максимальной производительности используйте программное изменение размера, чтобы изменить размер в определенное время, например сразу после загрузки новых данных.
Режимы автоматического изменения размера на основе содержимого не влияют на строки, столбцы или заголовки, которые вы скрыли, задав свойство строки или столбца Visible, или свойства элемента управления RowHeadersVisible или ColumnHeadersVisible для false
. Например, если столбец скрыт после автоматического изменения размера под размер большого значения ячейки, скрытый столбец не изменит свой размер, если строка, содержащая большое значение ячейки, удалена. Автоматическое изменение размера не происходит при изменении видимости, поэтому изменение свойства столбца Visible обратно на true
не приведет к перерасчету его размера на основе текущего содержимого.
Изменение размера на основе программного содержимого влияет на строки, столбцы и заголовки независимо от их видимости.
Программное изменение размера
Если автоматическое изменение размера отключено, можно программно задать точную ширину или высоту строк, столбцов или заголовков с помощью следующих свойств:
Вы также можете программно изменить размер строк, столбцов и заголовков, чтобы они соответствовали их содержимому с помощью следующих методов:
Эти методы будут изменять размер строк, столбцов или заголовков один раз, а не настраивать их для непрерывного изменения размера. Новые размеры автоматически вычисляются для отображения всего содержимого ячейки без обрезки. При программном изменении размера столбцов, имеющих InheritedAutoSizeMode значения свойств Fill, вычисляемые ширины на основе содержимого используются для пропорциональной корректировки значений свойств столбца FillWeight. Затем фактические ширины столбцов вычисляются в соответствии с этими новыми пропорциями, чтобы все столбцы заполняли доступную область отображения элемента управления.
Программное изменение размера полезно, чтобы избежать падения производительности при непрерывном изменении размера. Также полезно предоставить начальные размеры для строк, изменяемых пользователем, столбцов и заголовков, а также для режима заполнения столбцов.
Вы обычно вызываете методы программного изменения размера в определенные моменты. Например, можно программно изменить размер всех столбцов сразу после загрузки данных или программно изменить размер определенной строки после изменения определенного значения ячейки.
Настройка размерирования на основе содержимого
Вы можете настроить размеры при работе с ячейками, строками и столбцами производных типов DataGridView, переопределяя методы DataGridViewCell.GetPreferredSize, DataGridViewRow.GetPreferredHeightили DataGridViewColumn.GetPreferredWidth, или вызывая перегрузки защищенных методов изменения размера в производном элементе управления DataGridView. Защищенные перегруженные методы масштабирования предназначены для работы в парах для достижения идеального соотношения высоты к ширине ячейки, избегая чрезмерно широких или высоких ячеек. Например, если вызвать перегрузку AutoResizeRows(DataGridViewAutoSizeRowsMode,Boolean)
метода AutoResizeRows и передать значение false
для параметра Boolean, перегрузка вычислит идеальные высоты и ширину ячеек в строке, но она будет настраивать только высоту строки. Затем необходимо вызвать метод AutoResizeColumns, чтобы изменить ширину столбца в вычисляемом идеале.
Настройки размера, зависящие от содержимого
Перечисления, используемые свойствами и методами определения размера, имеют аналогичные значения для определения размера на основе содержимого. С помощью этих значений можно ограничить, какие ячейки используются для вычисления предпочтительных размеров. Для всех перечислений размера значения с именами, ссылающимися на отображаемые ячейки, ограничивают их вычисления ячейками в отображаемых строках. Исключение строк полезно, чтобы избежать снижения производительности при работе с большим количеством строк. Вы также можете ограничить вычисления значениями ячеек в заголовочных или незаголовочных ячейках.
См. также
- DataGridView
- DataGridView.AllowUserToResizeColumns
- DataGridView.AllowUserToResizeRows
- DataGridView.ColumnHeadersHeightSizeMode
- DataGridView.RowHeadersWidthSizeMode
- DataGridViewBand.Resizable
- DataGridView.AutoSizeColumnsMode
- DataGridView.AutoSizeRowsMode
- DataGridViewColumn.AutoSizeMode
- DataGridViewColumn.InheritedAutoSizeMode
- DataGridView.RowHeadersWidth
- DataGridView.ColumnHeadersHeight
- DataGridViewRow.Height
- DataGridViewColumn.Width
- DataGridView.AutoResizeColumn
- DataGridView.AutoResizeColumns
- DataGridView.AutoResizeColumnHeadersHeight
- DataGridView.AutoResizeRow
- DataGridView.AutoResizeRows
- DataGridView.AutoResizeRowHeadersWidth
- DataGridViewAutoSizeRowMode
- DataGridViewAutoSizeRowsMode
- DataGridViewAutoSizeColumnMode
- DataGridViewAutoSizeColumnsMode
- DataGridViewColumnHeadersHeightSizeMode
- DataGridViewRowHeadersWidthSizeMode
- Изменение размера столбцов и строк в элементе управления Windows Forms DataGridView
- Режим заполнения столбцов в элементе управления Windows Forms DataGridView
- Как установить режимы размера элемента управления DataGridView в Windows Forms
.NET Desktop feedback