Зміна розмірів управління datagridview в windows forms

За замовчуванням користувачі можуть змінювати розміри рядків, стовпців і заголовків, для яких не використовується режим автоматичної зміни розмірів залежно від значень в осередках. Щоб користувачі не могли змінювати розміри в інших режимах, наприклад в режимі заповнення стовпців, необхідно встановити одне з наступних властивостей 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. щоб підлаштувати ширину стовпців під розраховане ідеальне значення.

Перерахування, які використовуються властивостями зміни розмірів і методами, мають однакові значення для зміни розмірів залежно від вмісту. Використовуючи ці значення, можна обмежити осередки, які використовуються для обчислення кращого розміру. Для всіх перерахувань зміни розмірів значення з іменами, які належать до відображуваним осередкам, обмежують обчислення осередками у відображуваних рядках. Виняток рядків допоможе уникнути зниження продуктивності при роботі з великим числом рядків. Обчислення можна також обмежити значеннями осередків в осередках заголовка або інших осередках.

Схожі статті