Как обратиться к ячейке datagridview в c
Перейти к содержимому

Как обратиться к ячейке datagridview в c

  • автор:

Как обратиться к ячейке datagridview в c

DataGridView — стандартный GUI компонент для отображения и редактирования таблиц. Здесь коротко рассмотрены основные моменты работы с этим классом.

Перекиньте стандартным способом в форму компонент DataGridView.

DataGridView-adding.png

Источник данных при создании можно не указывать, так как DataGridView позволяет хранить данные внутри себя и добавлять/удалять их на лету, во время выполнения (runtime). После этого редактором свойств настройте поведение по умолчанию нового экземпляра DataGridView. Я обычно меняю свойства AllowUserToAddRows на false, AllowUserToDeleteRows на false, ReadOnly на true. Можно также переименовать экземпляр из dataGridView1 в что-нибудь более осмысленное, подходящее для Вашей программы.

Добавление строк и столбцов. Столбцы и строки можно добавлять во время выполнения программы (подробнее см. [1]). Пример добавления строк:

Однако если назначение и структура таблицы (количество и наименование столбцов) известны заранее, то можно редактором свойств добавить столбцы. Для этого редактируют свойство Columns.

DataGridView-edit-columns.png

Стиль текста заголовка. Пример, как можно установить жирный шрифт в заголовке таблицы:

Как поменять цвет фона заголовка и цвет шрифта:

Работа с ячейками. Обращение к ячейкам DataGridView довольно простое. Индексация столбцов (Columns) и строк (Rows) идет относительно нуля. Столбец с индексом 0 самый левый, и строка с индексом 0 самая верхняя. Количество строк можно получить через свойство RowCount. Добавляются строки методом Удаляются строки методом Rows->Add(), удаляются методом Rows->RemoveAt(номер строки). Пример добавления и удаления строк:

Более простой способ удаления строк:

Текущая строка. Узнать номер текущей строки можно через HitTestInfo->RowIndex:

Установить (поменять) текущую строку можно через свойство CurrentCell (в примере устанавливаем третью текущую строку):

Текущая строка помечена в таблице треугольничком:

DataGridView-current-row.png

Вид таблицы после отмены выделения текущей ячейки:

DataGridView current cell remove selection

Изменение данных в ячейках. Менять данные в ячейках таблицы можно только тогда, когда существуют соответствующий столбец и соответствующая строка, иначе произойдет ошибка выполнения («System.ArgumentOutOfRangeException» произошло в mscorlib.dll Дополнительные сведения: Индекс за пределами диапазона. Индекс должен быть положительным числом, a его размер не должен превышать размер коллекции.). После добавления строки методом Add все значения в ячейках добавленной строки будут пустые. К ячейке таблицы можно обращаться по номеру столбца и номеру строки через свойство Value.

Пример добавления строк и заполнения таблицы:

Стиль, цвет текста. Внешний вид текста в ячейке можно менять через свойство Style. Пример изменения цвета нужной ячейки на C#:

dataGridView Cells Style ForeColor

Пример изменения шрифта ячейки на жирный:

Как обращаться к столбцам не по их индексу, а по имени? Нумерация строк и столбцов начинается с нуля, и когда нам нужно обратиться к конкретной ячейке строки, то это можно сделать через числовой индекс: Rows[индексстроки].Cells[индексстолбца]. Однако есть удобная возможность получить индекс столбца по имени типа столбца:

В этом примере УровеньУст и УровеньСчит — типы столбцов, которые были установлены во время компиляции визуальным редактированием свойства Columns таблицы dgv. Используется свойство Index этих типов.

DataGridView Column Name

Клик на заголовке строки. Обработка клика на заголовке строки на C#:

Как удалить последнюю пустую строку?

DataGridView last empty row

Ответ: после манипуляции со строками и добавления новых строк установите в false свойство AllowUserToAddRows :

Программирование на C, C# и Java

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode

Значение ячейки DataGridView

Получить значение ячейки DataGridView достаточно просто. Но у начинающих зачастую возникают проблемы при работе с DataGridView, несмотря на то, что в Интернете много материалов на данную тему; к сожалению, многие из них не структурированы, и представлены, в основном, в виде обсуждений на форумах. Рассмотрим данный вопрос.

Создадим в Visual Studio проект Visual C# Windows Forms. Добавим на форму два элемента управления: DataGridView и Button. В DataGridView добавим три столбца.

Проект с DataGridView

Для получения значения ячейки из DataGridView C#, необходимо использовать следующий код:

How to get cell value of DataGridView by column name?

ArgumentException was unhandled. Column named xxx cannot be found.

Is it possible to get the cell values by column name?

8 Answers 8

DataGridViewColumn objects have a Name (shown only in the forms designer) and a HeaderText (shown in the GUI at the top of the column) property. The indexer in your example uses the column’s Name property, so since you say that isn’t working I assume you’re really trying to use the column’s header.

There isn’t anything built in that does what you want, but it’s easy enough to add. I’d use an extension method to make it easy to use:

Все о DataGridView. Учебник

Это опять создаст ситуацию, когда все колонки привязаны. Но на этот раз их три:


Рисунок 13.

Допустим, свободные колонки у нас есть. А как теперь работать с их ячейками? Другими словами – как добраться до конкретной ячейки grid-а и ее содержимого? Для этого нужно обратиться к индексатору Rows [], получить ссылку на конкретную строку ( DataGridViewRow ), а уже в ней, обратясь к индексатору Cells [] – ссылку на интересующую нас ячейку. Единственное, что надо учесть – ссылка будет иметь тип DataGridViewCell , а мы, чаще всего, будем заинтересованы в функциональности, присущей не любой ячейке вообще, а ячейке именно того или иного типа. Поэтому извлечение ячейки из коллекции практически всегда завершается приведением типа. Вернитесь к разделу "Добавляем строки" и еще раз посмотрите последний фрагмент кода. В нем мы создали grid 3х3, в котором все ячейки текстовые, за исключением ячейки с индексом 1 в строке с индексом 2 (2:1, далее для краткости будет использоваться такая запись). Указанная ячейка имеет тип DataGridViewComboBoxCell . Чтобы заполнить ее список четырьмя элементами, можно написать следующее:

Упомянутое приведение типов в этом примере выделено красным.

Доступ к значению ячейки в общем случае осуществляется через свойство Value . Тип этого свойства – object . Реальный тип значения полностью зависит от типа ячейки. Например, в предпоследнем фрагменте раздела "Добавляем строчки" кода мы работали с ячейкой типа DataGridViewCheckBoxCell и присваивали этому свойству значения типа bool . А DataGridViewTextBoxCell будет работать, что вполне ожидаемо, со строками. Вот как можно занести значение " Great !" в четвертую строку колонки " FreeForStart " из приведенного чуть выше примера:

Добавить комментарий

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