Разработка программы демонстрации работы элемента управления DataGridView

Разработка программы демонстрации работы элемента управления DataGridView

В Microsoft Visual Studio элемент управления DataGridView разработан для использования в приложениях, созданных по шаблону Windows Forms Application. Данный элемент управления позволяет организовывать данные в виде таблицы. Данные могут быть получены из базы данных, коллекции, внутренних переменных — массивов или других объектов программы.

В данной теме продемонстрировано использование элемента DataGridView для реализации двумерной таблицы (матрицы), ячейки которой могут редактироваться. Каждая ячейка таблицы представлена отдельным элементом управления типа TextBox. Как известно, в Microsoft Visual Studio реализован элемент управления TextBox, позволяющий пользователю вводить текст, обеспечивающий многострочное редактирование, ввод текста по маске.


Содержание


Выполнение

1. Запустить на выполнение Microsoft Visual Studio

 

2. Создать приложение по шаблону Windows Forms Application

Чтобы создать новое приложение нужно вызвать команду

File->New->Project...

В результате откроется окно «New Project». В левой части окна, во вкладке Recent Templates нужно задать Visual C#. В правой части окна выбрать шаблон Windows Forms Application.

Более подробный пример создания приложения по шаблону Windows Forms Application описан в теме:

Для новосозданного проекта задается папка (поле Location) и имя проекта (по умолчанию WindowsFormsApplication1. Папка может быть произвольной, например

C:\Programs\C_Sharp

После выбора OK в окне New Project, будет создана форма приложения и соответствующие файлы проекта. Имя формы остается Form1.

 

3. Проектирование формы приложения

3.1. Размещение элемента управления типа DataGridView на форме

Разместить на форме элемент управления типа DataGridView (рисунок 1). Данный элемент управления можно найти на панели инструментов ToolBox в вкладках «All Windows Forms» или «Data».

После размещения, система создает объект (переменную) с именем dataGridView1. С помощью этого имени можно программно оперировать методами и свойствами этого элемента управления.

Рис. 1. Элемент управления dataGridView1 и окно Properties со свойствами

3.2. Настройка размеров формы и элемента управления dataGridView1. Свойство Size

С целью корректного отображения, настраиваются размеры формы Form1 и элемента управления dataGridView1.

Размеры настраиваются приблизительно так, как показано на рисунке 2. Размеры можно настроить программным путем или вручную с помощью «мышки».

Чтобы настроить размеры dataGridView1 с помощью окна Properties нужно использовать свойство Size (рисунок 2).

Рис. 2. Свойство Size элемента управления dataGridView1

Чтобы настроить размеры dataGridView1 программно, можно использовать, например, следующий программный код

// задать размеры dataGridView1.
// Высота - 200 пикселей. Ширина - 350 пикселей
dataGridView1.Width = 350;
dataGridView1.Height = 200;

 

3.3. Размещение и настройка элементов управления типа Button и Label на форме

Разместить на форме 17 элементов управления типа Button (рисунок 3). Автоматически будет создано 17 объектов (переменных) с именами button1, button2, …, button17.

Рис. 3. Размещение элементов управления типа Button

Настроить свойства Text размещенных кнопок:

  • в элементе управления button1 свойство Text = «Добавить столбец»;
  • в button2 свойство Text = «Удалить столбец»;
  • в button3 свойство Text = «Добавить строку»;
  • в button4 свойство Text = «Удалить строку»;
  • в button5 свойство Text = «Текст в заголовке»;
  • в button6 свойство Text = «Выравнивание заголовка»;
  • в button7 свойство Text = «Шрифт заголовка»;
  • в button8 свойство Text = «Цвет шрифта заголовка»;
  • в button9 свойство Text = «Задать размер dataGridView1»;
  • в button10 свойство Text = «Ширина первого столбца»;
  • в button11 свойство Text = «Высота строки»;
  • в button12 свойство Text = «Выравнивание в столбце»;
  • в button13 свойство Text = «Шрифт в первом столбце»;
  • в button14 свойство Text = «Количество колонок»;
  • в button15 свойство Text = «Количество строк»;
  • в button16 свойство Text = «Ширина столбца»;
  • в button17 свойство Text = «Высота строки».

Во всех элементах управления установить свойство AutoSize в значение true.

Для вывода информации также нужно разместить на форме элемент управления типа Label. После размещения форма приложения примет вид, как показано на рисунке 4.

Рис. 4. Форма приложения после размещения и настройки элементов управления

 

4. Программирование обработчиков событий управления работой dataGridView1

Для работы программы нужно запрограммировать события клика на кнопках button1, button2, …, button17. Подробный пример программирования события Click элемента управления Button описывается в теме:

4.1. Команда «Добавить столбец»

Виды данных, которые могут быть представлены в ячейках dataGridView:

  • dataGridViewButtonColumn. Ячейки представлены в виде кнопок типа Button;
  • dataGridViewCheckBoxColumn. Ячейки представлены элементами управления типа CheckBox, которые позволяют выбирать несколько вариантов (опций) из набора предложенных;
  • dataGridViewComboBoxColumn. Ячейки представлены элементами управления типа ComboBox, предназначенных для выбора одного из нескольких вариантов;
  • dataGridViewImageColumn. Ячейки таблицы есть изображениями типа Image;
  • dataGridViewLinkColumn. Ячейки таблицы представлены ссылками;
  • dataGridViewTextBoxColumn. Этот вариант предлагается по умолчанию при добавлении (создании) нового столбца. В этом случае ячейки таблицы представлены в виде полей ввода. Это позволяет вводить данные в таблицу как в матрицу.

Добавить столбец в DataGridView можно:

  • с помощью специального мастера;
  • программно.

 

4.1.1. Добавление столбца с помощью специального мастера Microsoft Visual Studio

Чтобы добавить столбец в DataGridView с помощью мастера, нужно выполнить следующую последовательность действий:

  • вызвать меню «DataGridView Tasks» (рисунок 5) с помощью клика на стрелке вправо (правая верхняя часть прямоугольной области dataGridView1);
  • в меню «DataGridView Tasks» выбрать команду «Add Column…». В результате откроется окно «Add Column» (рисунок 6), в котором можно настроить название колонки, тип данных колонки, название заголовка и т.д.

Рис. 5. Окно выбора задач «dataGridView Tasks»

Рис. 6. Окно добавления столбца с помощью мастера

 

4.1.2. Добавление столбца программным путем

Столбцы в 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 – текст, который будет отображаться в заголовке столбца.

Текст обработчика события добавления двух произвольных столбцов следующий:

private void button1_Click(object sender, EventArgs e)
{
    // Добавить столбец с именем column-1, заголовок столбца - "Header column - 1"
    dataGridView1.Columns.Add("column-1", "Header column - 1");

    // Добавить столбец с именем column-2
    dataGridView1.Columns.Add("column-2", "Header column - 2");

    label1.Text = "Столбцы добавлены";
}

В реальных программах название столбца и его заголовка получаются из других элементов управления, например TextBox.

Для вставки столбца используется метод Insert, который имеет следующее объявление

void DataGridViewColumnCollection.Insert(int columnIndex, DataGridViewColumn dataGridViewColumn);

Вызов этого метода из программного кода аналогичен методу Add.

 

4.2. Команда «Удалить столбец»

Чтобы удалить столбец используется один из двух методов из коллекции Columns:

  • метод RemoveAt() – удаляет столбец по заданному индексу в коллекции;
  • метод Remove() – удаляет столбец по его имени.

Общий вид метода RemoveAt():

void DataGridViewColumnCollection.RemoveAt(int index);

где

  • index – заданный индекс в коллекции. Индексы нумеруются с 0.
void DataGridViewColumnCollection.Remove(string ColumnName);

где

  • ColumnName – название столбца (но не название заголовка столбца), которое задается в методе Add() первым параметром. Столбцы в коллекции могут иметь одинаковые значения ColumnName. Если при вызове метода Remove(), столбца с именем ColumnName нет, то генерируется исключительная ситуация.

Программный код удаления столбца с помощью метода RemoveAt():

private void button2_Click(object sender, EventArgs e)
{
    // удаление столбца в позиции 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 = "Столбец не удален";
    }
}

 

4.3. Команда «Добавить строку»

Добавлять строку можно одним из двух способов:

  • путем непосредственного ввода с клавиатуры;
  • программно.

Строки в DataGridView организованы в виде коллекции Rows типа dataGridViewRowCollection.

Ниже приведен обработчик события, добавляющий две произвольные строки в таблицу

private void button3_Click(object sender, EventArgs e)
{
    // Добавить строки в таблицу
    if (dataGridView1.Columns.Count <= 0)
    {
        label1.Text = "Строки не добавлены";
        return;
    }
    dataGridView1.Rows.Add("Ivanov I.I.", 25, "New York");
    dataGridView1.Rows.Add("Petrenko P.P.", 38, "Moscow");
    label1.Text = "Строки добавлены";
}

 

4.4. Команда «Удалить строку»

Для удаления строки используется один из двух методов:

  • метод RemoveAt() – удаляет строку по заданному индексу;
  • метод Remove() – удаляет строку, которая есть входным параметром типа DataGridViewRow.

Обработчик события удаления строки имеет вид:

private void button4_Click(object sender, EventArgs e)
{
    // Удалить строку
    int nr, nc;

    nc = dataGridView1.Columns.Count; // количество столбцов
    nr = dataGridView1.RowCount;

    if ((nc > 0) && (nr > 1))
    {
        dataGridView1.Rows.RemoveAt(0); // удалить первую строку
        label1.Text = "Строка удалена";
    }
    else
    {
        label1.Text = "Строка не удалена";
    }
}

 

4.5. Работа с заголовком заданного столбца
4.5.1. Задать текст заголовка в заданном столбце (колонке) программным путем

Чтобы задать текст заголовка в заданном столбце используется свойство HeaderText. Текст обработчика события установки текста заголовка в столбце с индексом 0 имеет вид:

private void button5_Click(object sender, EventArgs e)
{
    // задать текст в заголовке
    int nc = dataGridView1.ColumnCount;

    if (nc > 0)
    {
        // задать новый текст заголовке первого столбца
        dataGridView1.Columns[0].HeaderText = "Header - 1";
        label1.Text = "Текст задан";
    }
    else
    {
        label1.Text = "Текст не задан";
    }
}

 

4.5.2. Задать выравнивание заголовка в заданном столбце программным путем

Выравнивание заголовка в столбце задается с помощью свойства HeaderCell.Style.Alignment.

Программный код обработчика события установки выравнивания в заголовке столбца с индексом 0:

private void button6_Click(object sender, EventArgs e)
{
    // выравнивание заголовка
    int nc;
    nc = dataGridView1.ColumnCount;

    if (nc > 0)
    {
        // задать выравнивание по центру (по горизонтали и по вертикалу)
        dataGridView1.Columns[0].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
        label1.Text = "Выравнивание выполнено";
    }
    else
    {
        label1.Text = "Выравнивание не выполнено";
    }
}

 

4.5.3. Задать шрифт заголовка в столбцах программным путем

Для установки шрифта в заголовках столбцов используется свойство ColumnHeadersDefaultCellStyle. В этом свойстве используется свойство Font.

В обработчике события создается шрифт Arial, имеющий размер 12 и курсивное начертание.

private void button7_Click(object sender, EventArgs e)
{
    // задать шрифт в заголовке
    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 = "Шрифт не задан";
    }
}

 

4.5.4. Задать цвет шрифта заголовков программным путем

Чтобы задать цвет шрифта заголовков программным путем нужно использовать свойство ColumnHeaderDefaultCellStyle. В этом свойстве есть свойства ForeColor и BackColor.

private void button8_Click(object sender, EventArgs e)
{
    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 = "Цвет не изменен";
    }
}

 

4.6. Работа с параметрами столбцов, строк, ячеек
4.6.1. Установка размеров dataGridView1 программным путем
private void button9_Click(object sender, EventArgs e)
{
    // задать размер dataGridView1
    dataGridView1.Width = 600;
    dataGridView1.Height = 150;
    label1.Text = "Размер установлен";
}

 

4.6.2. Установка ширины заданного столбца dataGridView1
private void button10_Click(object sender, EventArgs e)
{
    // задать ширину столбца
    int nc;
    nc = dataGridView1.ColumnCount;

    if (nc > 0)
    {
        // задать ширину столбца с индексом 0
        dataGridView1.Columns[0].Width = 70;
        label1.Text = "Ширина столбца задана";
    }
    else
    {
        label1.Text = "Ширина столбца не задана";
    }
}

 

4.6.3. Установка высоты заданной строки dataGridView1
private void button11_Click(object sender, EventArgs e)
{
    // задать высоту строки
    int nc, nr;
    nc = dataGridView1.ColumnCount;
    nr = dataGridView1.RowCount;

    if ((nc > 0) && (nr > 1))
    {
        dataGridView1.Rows[0].Height = 50;
        label1.Text = "Высота строки задана";
    }
    else
    {
        label1.Text = "Высота строки не задана";
    }
}

 

4.6.4. Установка выравнивания в заданном столбце и строке
private void button12_Click(object sender, EventArgs e)
{
    // выравнивание в строках
    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;
    }
}

 

4.6.5. Установка шрифта, цвета символов и фона в первом столбце

Чтобы задать шрифт, цвет символов и фона в первом столбце, используется свойство DefaultCellStyle столбца с индексом 0. В этом свойстве есть свойства Font, BackColor, ForeColor.

Ниже приведен обработчик события, который задает цвет шрифта, символов и фона в dataGridView1.

private void button13_Click(object sender, EventArgs e)
{
    // шрифт и цвет в первом столбце
    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 = "Шрифт не изменен";
    }
}

 

4.7. Получение информации о столбцах и строках dataGridView1
4.7.1. Определить количество столбцов
private void button14_Click(object sender, EventArgs e)
{
    // определить количество столбцов
    int n;
    n = dataGridView1.Columns.Count;
    label1.Text = n.ToString();
}

 

4.7.2. Определить количество строк
private void button15_Click(object sender, EventArgs e)
{
    // определить количество строк без строки заголовка
    int n;
    n = dataGridView1.Rows.Count;
    label1.Text = (n - 1).ToString();
}

 

4.7.3. Определить ширину заданного столбца в пикселах
private void button16_Click(object sender, EventArgs e)
{
    // ширина столбца в пикселах
    int w;
    int nc;
    nc = dataGridView1.Columns.Count;

    if (nc > 0)
    {
        w = dataGridView1.Columns[0].Width;
        label1.Text = w.ToString();
    }
}

 

4.7.4. Определить высоту заданной строки в пикселах
private void button17_Click(object sender, EventArgs e)
{
    // определить высоту строки в пикселах
    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();
    }
}

 

5. Запуск программы на выполнение

 


Связанные темы