Домой Component Колонка кнопок(DataGridViewButtonColumn) в DataGridView: Справочник по C#

Колонка кнопок(DataGridViewButtonColumn) в DataGridView: Справочник по C#

1166
0


      Иногда возникает необходимость размещения колонки с кнопками в таблице для выполнения каких либо действий с данными, сегодня рассмотрим основные требования для реализации данной задачи.
      Для начала работы вам потребуется создать новый проект и добавить на форму компонент DataGridView. После выполнения этих действий у вас получится вот такой вариант формы:

      Давайте для начала создадим тестовый источник данных для компонента, который мы разместим в метод срабатывающий при запуске нашего проекта:

private void Form1_Load(object sender, EventArgs e)
{
//Указываем, что колонок(столбцов) с данными будет три
dataGridView1.ColumnCount = 3;

//Задаем имена столбцов
dataGridView1.Columns[0].Name = "Product ID";
dataGridView1.Columns[1].Name = "Product Name";
dataGridView1.Columns[2].Name = "Product Price";

//Добавляем строки данных
string[] row = new string[] { "1", "Product 1", "1000" };
dataGridView1.Rows.Add(row);
row = new string[] { "2", "Product 2", "2000" };
dataGridView1.Rows.Add(row);
row = new string[] { "3", "Product 3", "3000" };
dataGridView1.Rows.Add(row);
row = new string[] { "4", "Product 4", "4000" };
dataGridView1.Rows.Add(row);
}

После добавления данных, добавим в этот же метод новый экземпляр класса System.Windows.Forms.DataGridViewButtonColumn.

DataGridViewButtonColumn ButtonColumn = new DataGridViewButtonColumn();

Зададим режим изменения размеров столбца, у нас есть несколько вариантов:

  • NotSet — ежим изменения размеров столбца наследуется из свойства System.Windows.Forms.DataGridView.AutoSizeColumnsMode.
  • None — Значения ширины столбцов не изменяются автоматически.
  • ColumnHeader — Ширина столбца изменяется так, чтобы вместить содержимое ячейки заголовка для столбца.
  • AllCellsExceptHeader — Ширина столбца изменяется так, чтобы вместить содержимое всех ячеек столбца, за исключением ячейки заголовка.
  • AllCells — Ширина столбца изменяется так, чтобы вместить содержимое всех ячеек столбца, включая ячейку заголовка.
  • DisplayedCellsExceptHeader — Ширина столбца изменяется так, чтобы вместить содержимое всех ячеек столбца, которые находятся в строках, отображающихся на экране в настоящий момент, за исключением строки заголовка.
  • DisplayedCells — Ширина столбца изменяется так, чтобы вместить содержимое всех ячеек столбца, которые находятся в строках, отображающихся на экране в настоящий момент, включая строку заголовка.
  • Fill — Ширина столбца подбирается таким образом, чтобы суммарная ширина всех столбцов в точности заполняла отображаемую область элемента управления, а прокрутка по горизонтали требовалась только для столбцов, ширина которых превышает значение свойства System.Windows.Forms.DataGridViewColumn.MinimumWidth . Относительная ширина столбцов определяется относительными значениями свойства System.Windows.Forms.DataGridViewColumn.FillWeight.
ЧИТАТЬ ТАКЖЕ:  Разбор строки на разные категории символов: Справочник по C#


Выберем AllCells.

ButtonColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

Задаем значение, указывающее, что столбец является видимым.

ButtonColumn.Visible = true;

Задаем текст, используемый для подсказок.

ButtonColumn.ToolTipText = "Удалить строку";

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

ButtonColumn.Text = "Удалить";

Задаем имя столбца.

ButtonColumn.Name = "DeleteButtonColumn";

Задаем текст ячейки заголовка столбца.

ButtonColumn.HeaderText = "Редактирование";

Указываем, что необходимо отображать текст на каждом элементе управления.

ButtonColumn.UseColumnTextForButtonValue = true;

Зададим внешний вид кнопки в каждой ячейки. У нас есть несколько вариантов:

  • Flat — Элемент управления выглядит плоским.
  • Popup — Элемент управления выглядит плоским, а при наведении на него указателя мыши становится объемным.
  • Standard — Элемент управления выглядит объемным.
  • System — Внешний вид элемента управления определяется пользовательской операционной системой.

Возьмем к примеру Popup.

ButtonColumn.FlatStyle = FlatStyle.Popup;

      Теперь возникает необходимость создать событие на нажатие по кнопке. Для этого делаем клик правой клавишей мыши по компоненту и переходим в его свойства. Далее необходимо перейти в события компонента нажав на кнопку в виде молнии, расположенной под заголовком «Свойства». Находим событие CellContentClick и напротив него делаем два клика левой клавишей мыши.

      После выполнения всех действий у вас откроется вкладка(или станет активной) с кодом формы на которой размещен компонент, с созданным методом dataGridView1_CellContentClick в котором мы пропишем, если индекс столбца ячейки, для которой произошло событие равен индексу столбца в котором расположены кнопки то выполни код. В нашем случае столбец добавлен последним, поэтому индекс у него 3.

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 3)
{
MessageBox.Show("Нажата кнопка на строке "+ e.RowIndex.ToString());
}
}

Пример выполнения программы:

Ссылка для скачивания примера: Яндекс.Диск

Колонка кнопок(DataGridViewButtonColumn) в DataGridView: Справочник по C#

0.00 (0%) 0 votes

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь