Елемент управління DataGridView
Дана тема використовує програмний код, взятий з теми:
Зміст
- Питання/відповідь
- 1. Яке призначення елементу управління DataGridView?
- 2. Чи можна використовувати елемент управління DataGridView безпосередньо без зв’язування його з базою даних?
- 3. Як програмно задати розміри DataGridView? Властивості Width, Height
- 4. Які види даних (типи) можуть бути представлені у комірках DataGridView?
- 5. Додавання стовпця програмним шляхом. Властивість Columns. Методи Add(), Insert()
- 6. Як реалізувати видалення стовпця програмним шляхом? Методи Remove() та RemoveAt()
- 7. Програмне додавання рядка. Метод Add()
- 8. Програмне видалення рядка. Методи Remove() та RemoveAt()
- 9. Задавання тексту заголовку в заданому стовпці програмним шляхом
- 10. Задавання вирівнювання заголовку в заданому стовпці
- 11. Встановлення шрифту заголовку в стовпцях
- 12. Задавання кольору шрифту заголовків
- 13. Задавання розмірів dataGridView1
- 14. Задавання ширини заданого стовпця dataGridView1
- 15. Задавання висоти заданого рядка dataGridView1
- 16. Задавання вирівнювання в заданому стовпці та рядку
- 17. Задавання шрифту, кольору символів і фону в першому стовпці
- 18. Визначення кількості стовпців
- 19. Визначення кількості рядків
- 20. Визначення ширини заданого стовпця в пікселях
- 21. Визначення висоти заданого рядка в пікселях
- 22. Визначення номеру виділеного рядка. Властивість CurrentRow
- Зв’язані теми
Пошук на інших ресурсах:
1. Яке призначення елементу управління DataGridView?
У Microsoft Visual Studio елемент управління dataGridView розроблений для використання в додатках, створених за шаблоном Windows Forms Application. Даний елемент управління дозволяє організовувати дані у вигляді таблиці. Дані можуть отримуватись з бази даних, колекції, внутрішніх змінних – масивів чи інших об’єктів програми.
Даний елемент управління є аналогічний компоненту TStringGrid в системі візуальної розробки додатків Delphi.
Даний елемент управління можна знайти на панелі інструментів 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. Додавання стовпця програмним шляхом. Властивість Columns. Методи Add, Insert
Додати стовпець в 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 I.I.", 25, "New York"); dataGridView1.Rows.Add("Petrenko P.P.", 38, "London"); 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 і стиль “курсив”.
// задати шрифт в заголовку // створити шрифт "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(); }
⇑
22. Визначення номеру виділеного рядка. Властивість CurrentRow
Часто в додатках потрібно визначити виділений рядок в таблиці DataGridView. Для цього використовується властивість CurrentRow, яка містить позицію всю необхідну інформацію про виділений рядок. Щоб визначити позицію виділеного рядка використовується властивість CurrentRow.Index.
Приклад. У фрагменті коду визначаються значення полів виділеного рядка. Попередньо здійснюється перевірка, в якій перевіряється чи взагалі рядок виділений.
// 1. Перевірка, чи є рядки в dataGridView1 if (dataGridView1.RowCount <= 1) return; // 2. Визначення номеру (позиції) виділеного рядка int index = dataGridView1.CurrentRow.Index; // 3. Перевірка, чи виділений взагалі рядок if (index == dataGridView1.RowCount - 1) { label1.Text = "Рядок не виділено"; return; } // 3. Якщо рядок виділено, то вивести інформацію про нього string name = (string)dataGridView1.Rows[index].Cells[0].Value; string surname = (string)dataGridView1.Rows[index].Cells[1].Value; string telephone = (string)dataGridView1.Rows[index].Cells[2].Value; label1.Text = "Виділений рядок: " + name + "/" + surname + "/" + telephone;
⇑
Зв’язані теми
- Як вивести таблицю бази даних Microsoft Access в компонент DataGridView
- Курсова робота. Розробка програми автоматизації роботи диспетчера автовокзалу
- Курсова робота. Розробка програми моніторингу забруднення навколишнього середовища