C #. Елемент управління DataGridView
Дана тема використовує програмний код з теми:
зміст
1. Яке призначення елемента управління DataGridView?
У Microsoft Visual Studio елемент управління dataGridView розроблений для використання в додатках, створених за шаблоном Windows Forms Application. Даний елемент управління дозволяє організовувати дані у вигляді таблиці. Дані можуть бути отримані з бази даних, колекції, внутрішніх змінних - масивів або інших об'єктів програми.
Даний елемент управління аналогічний компоненту TStringGrid в системі візуальної розробки додатків.
Даний елемент розміщений на панелі інструментів ToolBox у вкладках «All Windows Forms» або «Data» (малюнок 1).
Після розміщення на формі, система створює об'єкт (змінну) з ім'ям dataGridView1. За допомогою цього імені можна програмно оперувати методами і властивостями цього елемента управління.
Мал. 1. Елемент управління dataGridView1 і вікно Properties з властивостями
⇑
2. Чи можна використовувати DataGridView безпосередньо без зв'язування його з базою даних?
Так можна. У DataGridView дані можуть бути отримані з бази даних, колекції, внутрішніх структур даних (масивів, структур і т.д.).
⇑
3. Як програмно задати розміри DataGridView? Властивості Width, Height
Для завдання розмірів DataGridView використовуються властивості Width і Height.
// задати розміри dataGridView1. // Висота - 200 пікселів. Ширина - 350 пікселів dataGridView1.Width = 350; dataGridView1.Height = 200;
⇑
4. Які види даних можуть бути представлені в осередках DataGridView?
Види даних, які можуть бути представлені в осередках dataGridView:
- dataGridViewButtonColumn. Осередки представлені у вигляді кнопок типу Button;
- dataGridViewCheckBoxColumn. Осередки представлені елементами управління типу CheckBox, які дозволяють вибирати кілька варіантів (опцій) з набору запропонованих;
- dataGridViewComboBoxColumn. Осередки представлені елементами управління типу ComboBox, призначених для вибору одного з декількох варіантів;
- dataGridViewImageColumn. Осередки таблиці є зображеннями типу Image;
- dataGridViewLinkColumn. Осередки таблиці представлені посиланнями;
- dataGridViewTextBoxColumn. Цей варіант пропонується за замовчуванням при додаванні (створення) нового стовпчика. В цьому випадку елементи таблиці представлені у вигляді полів введення. Це дозволяє вводити дані в таблицю як в матрицю.
⇑
5. Додавання стовпця програмним шляхом
Додати стовпець в dataGridView можна:
- за допомогою спеціального майстра;
- програмним шляхом.
Стовпці в dataGridView організовані у вигляді колекції Columns типу DataGridViewColumnCollection. Щоб додати стовпець програмним шляхом використовується метод (команда) Add з колекції Columns.
Метод Add має 2 варіанти реалізації:
int DataGridViewColumnCollection.Add (DataGridViewColumn dataGridViewColumn); int DataGridViewColumnCollection.Add (string ColumnName, string HeaderText);
де
- DataGridViewColumn - тип System.Windows.Forms.Column який додається;
- ColumnName - назва, по якому буде здійснюватися звернення до колонку з інших методів;
- HeaderText - текст, який буде відображатися в заголовку стовпця.
Фрагмент коду, який додає два довільних стовпчика наступний:
// Додати стовпець з ім'ям column-1, заголовок стовпчика - "Header column - 1" dataGridView1.Columns.Add ( "column-1", "Header column - 1"); // Додати стовпець з ім'ям column-2 dataGridView1.Columns.Add ( "column-2", "Header column - 2");
У реальних програмах назва стовпчика і його заголовка виходять з інших елементів управління, наприклад TextBox.
Для вставки стовпця використовується метод Insert, який має таке оголошення
void DataGridViewColumnCollection.Insert (int columnIndex, DataGridViewColumn dataGridViewColumn);
Виклик цього методу з програмного коду аналогічний методу Add.
⇑
6. Як програмно реалізувати видалення стовпця? Методи Remove () і RemoveAt ()
Щоб видалити стовпець використовується один з двох методів з колекції Columns:
- метод RemoveAt () - видаляє стовпець по заданому індексу в колекції;
- метод Remove () - видаляє стовпець по його імені.
Загальний вигляд методу RemoveAt ():
void DataGridViewColumnCollection.RemoveAt (int index);
де
- index - заданий індекс в колекції. Індекси нумеруються з 0.
void DataGridViewColumnCollection.Remove (string ColumnName);
де
- ColumnName - назва стовпчика (але не назву заголовка стовпчика), яке задається в методі Add () першим параметром. Стовпці в колекції можуть мати однакові значення ColumnName. Якщо при виклику методу Remove (), стовпці з ім'ям ColumnName немає, то генерується виняткова ситуація.
Фрагмент коду видалення стовпця за допомогою методу RemoveAt ():
// видалення стовпця в позиції index int index; // номер стовпчика, який видаляється int n; // поточну кількість стовпців в dataGridView // задати номер стовпця, який видаляється index = 1; // визначити поточну кількість стовпців в dataGridView n = dataGridView1.Columns.Count; // видалення if ((n> 0) && (index> = 0) && (index <n)) {dataGridView1.Columns.RemoveAt (index); label1.Text = "Стовпець видалений"; } Else {label1.Text = "Стовпець не видалений"; }
⇑
7. Програмне додавання рядка. Метод Add ()
Додавати рядок можна одним із двох способів:
- шляхом безпосереднього введення з клавіатури;
- програмним шляхом.
Рядки в DataGridView організовані у вигляді колекції Rows типу dataGridViewRowCollection.
Нижче наведено фрагмент методу, який додає 2 довільні рядки в таблицю
// Додати рядки в таблицю if (dataGridView1.Columns.Count <= 0) {label1.Text = "Рядки не додано"; return; } DataGridView1.Rows.Add ( "Ivanov II", 25, "New York"); dataGridView1.Rows.Add ( "Petrenko PP", 38, "Moscow"); label1.Text = "Рядки додані";
⇑
8. Програмне видалення рядка. Методи Remove () і RemoveAt ()
Для видалення рядка використовується один з двох методів:
- метод RemoveAt () - видаляє рядок по заданому індексу;
- метод Remove () - видаляє рядок, яка є вхідним параметром типу DataGridViewRow.
Фрагмент коду видалення рядка має вигляд:
// Видалити рядок int nr, nc; nc = dataGridView1.Columns.Count; // кількість стовпців nr = dataGridView1.RowCount; if ((nc> 0) && (nr> 1)) {dataGridView1.Rows.RemoveAt (0); // видалити перший рядок label1.Text = "Рядок видалена"; } Else {label1.Text = "Рядок не очищено"; }
⇑
9. Завдання тексту заголовка в заданому стовпці програмним шляхом
Щоб задати текст заголовка в заданому стовпці використовується властивість HeaderText. Фрагмент коду установки тексту заголовка в стовпці з індексом 0 має вигляд:
// задати текст в заголовку int nc = dataGridView1.ColumnCount; if (nc> 0) {// задати новий текст заголовку першого стовпчика dataGridView1.Columns [0] .HeaderText = "Header - 1"; label1.Text = "Текст заданий"; } Else {label1.Text = "Текст не заданий"; }
⇑
10. Установка вирівнювання заголовка в заданому стовпці програмним шляхом
Вирівнювання заголовка в стовпці задається за допомогою властивості HeaderCell.Style.Alignment.
Фрагмент коду установки вирівнювання в заголовку стовпця з індексом 0:
// вирівнювання заголовка int nc; nc = dataGridView1.ColumnCount; if (nc> 0) {// задати вирівнювання по центру (по горизонталі і по вертикалі) dataGridView1.Columns [0] .HeaderCell.Style.Alignment = DataGridViewContentAlignment .MiddleCenter; label1.Text = "Вирівнювання виконано"; } Else {label1.Text = "Вирівнювання не виконано"; }
⇑
11. Установка шрифту заголовка в шпальтах програмним шляхом
Для установки шрифту в заголовках стовпців використовується властивість ColumnHeadersDefaultCellStyle. У цій властивості використовується властивість Font.
У фрагменті коду створюється шрифт Arial, має розмір 12 і курсивне накреслення.
// задати шрифт в заголовку int nc; nc = dataGridView1.ColumnCount; // створити шрифт "Arial", розмір 12, накреслення - "курсив" Font F = new Font ( "Arial", 12, FontStyle .Italic); if (nc> 0) {// встановити шрифт заголовка dataGridView1.ColumnHeadersDefaultCellStyle.Font = F; label1.Text = "Шрифт заданий"; } Else {label1.Text = "Шрифт не заданий"; }
⇑
12. Установка кольору шрифту заголовків програмним шляхом
Щоб задати колір шрифту заголовків програмним шляхом потрібно використовувати властивість ColumnHeaderDefaultCellStyle. У цій властивості є властивості ForeColor і BackColor.
int nc; nc = dataGridView1.ColumnCount; if (nc> 0) {// створити системний шрифт Font F = new Font ( "Arial", 14); // задати колір в заголовках стовпців dataGridView1.ColumnHeadersDefaultCellStyle.ForeColor = Color .Purple; // задати шрифт dataGridView1.Columns [0] .DefaultCellStyle.Font = F; label1.Text = "Колір заголовка змінений"; } Else {label1.Text = "Колір не змінений"; }
⇑
13. Установка розмірів dataGridView1 програмним шляхом
// задати розмір dataGridView1 dataGridView1.Width = 600; dataGridView1.Height = 150;
⇑
14. Установка ширини заданого стовпчика dataGridView1
// задати ширину стовпця int nc; nc = dataGridView1.ColumnCount; if (nc> 0) {// задати ширину шпальти з індексом 0 dataGridView1.Columns [0] .Width = 70; label1.Text = "Ширина стовпчика задана"; } Else {label1.Text = "Ширина стовпчика не задана"; }
⇑
15. Установка висоти заданого рядка dataGridView1
// задати висоту рядка int nc, nr; nc = dataGridView1.ColumnCount; nr = dataGridView1.RowCount; if ((nc> 0) && (nr> 1)) {dataGridView1.Rows [0] .Height = 50; label1.Text = "Висота рядка задана"; } Else {label1.Text = "Висота рядка не задана"; }
⇑
16. Встановлення вирівнювання в заданому стовпці і рядку
// вирівнювання в рядках int nc, nr; nc = dataGridView1.ColumnCount; nr = dataGridView1.RowCount; if ((nc> 0) && (nr> 1)) {// вирівнювання для всіх рядків dataGridView1.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment .BottomRight; // вирівнювання для рядка з індексом 0 dataGridView1.Rows [0] .DefaultCellStyle.Alignment = DataGridViewContentAlignment .MiddleCenter; // вирівнювання для стовпця з індексом 0 dataGridView1.Columns [0] .DefaultCellStyle.Alignment = DataGridViewContentAlignment .BottomLeft; }
⇑
17. Установка шрифту, кольору символів і фону в першому стовпці
Щоб задати шрифт, колір символів і фону в першому стовпці, використовується властивість DefaultCellStyle стовпчика з індексом 0. У цій властивості є властивості Font, BackColor, ForeColor.
Нижче наведено фрагмент коду, який задає колір шрифту, символів і фону в dataGridView1.
// шрифт і колір в першому стовпці int nc, nr; nc = dataGridView1.ColumnCount; nr = dataGridView1.RowCount; if ((nc> 0) && (nr> 1)) {// створити шрифт Font F = new Font ( "Times New Roman", 10, FontStyle.Bold); // колір символів і фону в першому стовпці dataGridView1.Columns [0] .DefaultCellStyle.BackColor = Color .Red; dataGridView1.Columns [0] .DefaultCellStyle.ForeColor = Color .Blue; // шрифт в першому стовпці dataGridView1.Columns [0] .DefaultCellStyle.Font = F; label1.Text = "Шрифт і колір в 1-м стовпці змінений"; } Else {label1.Text = "Шрифт не змінений"; }
⇑
18. Визначення кількості стовпців
// визначити кількість стовпців int n; n = dataGridView1.Columns.Count; label1.Text = n.ToString ();
⇑
19. Визначення кількості рядків
// визначити кількість рядків без рядка заголовка int n; n = dataGridView1.Rows.Count; label1.Text = (n - 1) .ToString ();
⇑
20. Визначення ширини заданого стовпчика в пікселах
// ширина стовпця в пікселях int w; int nc; nc = dataGridView1.Columns.Count; if (nc> 0) {w = dataGridView1.Columns [0] .Width; label1.Text = w.ToString (); }
⇑
21. Визначення висоти заданого рядка в пікселах
// визначити висоту рядка в пікселах int h; int nr, nc; nc = dataGridView1.Columns.Count; nr = dataGridView1.RowCount; if ((nr> 1) && (nc> 0)) {h = dataGridView1.Rows [0] .Height; label1.Text = h.ToString (); }
⇑
пов'язані теми
⇑
1. Яке призначення елемента управління DataGridView?2. Чи можна використовувати DataGridView безпосередньо без зв'язування його з базою даних?
3. Як програмно задати розміри DataGridView?
6. Як програмно реалізувати видалення стовпця?