Изменение размеров управления DataGridView в Windows Forms
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 элементе управления: режим заполнения столбца и автоматическое изменение размеров на основе содержимого.
Режим заполнения столбца приводит к тому, что видимые столбцы в элементе управления заполняют ширину области отображения элемента управления. дополнительные сведения об этом режиме см. в разделе режим заполнения столбца в элементе управления Windows Forms DataGridView.
Кроме того, можно настроить автоматическое изменение размеров строк, столбцов и заголовков в соответствии с содержимым ячеек. В этом случае изменение размера происходит при каждом изменении содержимого ячейки.
Если вы сохраняете значения ячеек в пользовательском кэше данных с помощью виртуального режима, автоматическое изменение размеров происходит, когда пользователь редактирует значение ячейки, но не происходит при изменении кэшированного значения вне 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, у которого DataSource — Datatable. В этой Datatable есть поля типа float. Когда юзер редактирует ячейку в гриде и в числовую колонку пытается ввести, например, символ, выдаётся ошибка. Пытаюсь решить проблему так: юзер пускай вводит что хочет, но при неправильном вводе возникнет событие
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Привязка данных к определенной колонке и строке в datagridview
Подскажите пожалуйста, как можно поместить определенные данные в нужный столбец и определенную.
Определить тип данных в ячейках DataGridView
Привет всем форумчане! Мне нужно ваше помощь, у меня есть DGV , в нем 1 столбец и 20 строка с.
Поиск по колонке в DataGridView
Всем привет, такая проблема, у меня есть функция поиска, которая ищет данные в datagridview. В.
Изменение цвета в колонке dataGridView
Допустим, есть таблица dataGridView. В ней есть 4 колонки. Как сделать так, что бы если в 4 колонке.
MVK, спасибо большое. Мне бы ещё понять как сделать так:
пользовать ввёл неверное значение, букву например, получил сообщение об ошибке, по нажатию на кнопку ОК значение должно поменяться на 0,0 сразу. А оно таким становится только после того как юзер переведёт фокус на другую ячейку
Сейчас код такой
Решение
Целочисленное значение в колонке datagridview
скажите как извлечь из колонки datagridview значения из всех строк так, чтобы получились.
Создание заданий в колонке DataGridView
Имеется обыкновенный Grid, в одной из колонок которой идет добавление заданий(см. Скрин) Никак не.
Подсчет уникальных значений в колонке dataGridView
Необходимо подсчитать количество уникальных значений в колонке dataGridView. Ответ к.
В DataGridView к колонке привязать колонку из Datatable
Добрый день, в общем-то сабж. Как привязать данные с одной колонки в DataTable к определенной.
Источник