c# DataGridView свойство ColumnCount

Свойство ColumnCount элемента управления DataGridView

Свойство ColumnCount элемента управления DataGridView обычно используется для решения следующих задач:

1. Получение количества колонок в DataGridView.

int curColumnCount = dataGridView1.ColumnCount;

По сути, является сокращенной записью вызова свойства Count.

int curColumnCount = dataGridView1.Columns.Count;

2. Создание и добавление новых колонок в DataGridView.

//создаём и добавляем пять колонок
dataGridView1.ColumnCount = 5;
int dgvColsCount = dataGridView1.ColumnCount; //5

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

  • коллекция Columns пустая (dataGridView1.Columns.Count == 0)
  • DataGridView не привязан к источнику данных (dataGridView1.DataSet == null)

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

for (int i = 0; i  5; i++)
{
dataGridView1.Columns.Add("", "");
}
//текущее кол-во колонок в DataGridView
int dgvColsCount = dataGridView1.Columns.Count; //5

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

datagridview

Теперь посмотрим, как установленное значение влияет на результат работы свойства ColumnCount.

1). Если значение установленное свойству ColumnCount меньше текущего количества колонок в элементе управления DataGridView (value < dataGridView1.Columns.Count), то количество столбцов уменьшается до заданного свойству значения.

Например, добавим к четырём колонкам ещё одну.

dataGridView1.ColumnCount = 1;

одна колонка

В результате остается только одна колонка, а все остальные удаляются.

2). Если значение установленное свойству ColumnCount больше текущего количества колонок в DataGridView (value > dataGridView1.Columns.Count), то количество столбцов увеличивается на разницу между двумя этими значениями.

Например, к четырём колонкам добавим ещё пять колонок.

dataGridView1.ColumnCount = 5;

В результате добавляется только одна колонка.

пять колонок

3). Если установленное значение равно текущему количеству колонок в элементе DataGridView (value == dataGridView1.Columns.Count), то количество столбцов не изменяется.

Например, к текущим четырем колонкам добавим ещё четыре колонки.

dataGridView1.ColumnCount = 4;

В результате в DataGridView по-прежнему содержится четыре колонки.

4). Если присвоить свойству значение ноль, то вызывается метод Clear и коллекция Columns полностью очищается.

int curColCount = dataGridView1.ColumnCount //4
dataGridView1.ColumnCount = 0;
curColCount = dataGridView1.ColumnCount; //0

5). Отрицательное значение всегда приводит к выбросу исключения.

//исключение
dataGridView1.ColumnCount = -1;

6). Если добавление колонок выполняется после выполнения привязки, то в результате возникает исключение с текстом: &#171;ColumnCount property cannot be set on a data-bound DataGridView control&#187;.

Например, создадим таблицу типа DataTable и привяжем её к элементу управления DataGridView.

//создаёт таблицу
DataTable dt = new DataTable();
//создаёт 3 колонки
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("name", typeof(string));
dt.Columns.Add("age", typeof(int));
//привязка
dataGridView1.DataSource = dt;
//пытаемся добавить ещё 2 колонки, получаем исключение
dataGridView1.ColumnCount = 2;

7). Если добавление колонок выполняется перед выполнением привязки, то ошибка не возникает:

//добавили 2 колонки
dataGridView1.ColumnCount = 2;
DataTable dt = new DataTable();
//...
dataGridView1.DataSource = dt;

две колонки

В результате в элементе DataGridView содержится пять колонок.

Читайте также:

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*