Как получить значение строки в DataGridView в C#
В этой статье мы рассмотрим, как получить значение строки в элементе управления DataGridView в C#. DataGridView предоставляет удобный способ отображения и редактирования данных в виде таблицы. Для доступа к значениям конкретной строки нам понадобится использовать индекс строки и индекс столбца. Рассмотрим несколько примеров для выполнения этой задачи.
Пример 1: Получение значения строки по индексу
Для получения значения строки в DataGridView по индексу, мы можем использовать свойство Rows и обратиться к нужной строке с помощью индекса, а затем указать индекс столбца. Например, если нам нужно получить значение ячейки в первом столбце второй строки, мы можем использовать следующий код:
int rowIndex = 1; // индекс строки int columnIndex = 0; // индекс столбца object cellValue = dataGridView.Rows[rowIndex].Cells[columnIndex].Value; Console.WriteLine("Значение строки: " + cellValue);
Пример 2: Получение значения строки по имени столбца
Если в DataGridView используются именованные столбцы, мы можем получить значение строки по имени столбца. Для этого нам понадобится использовать свойство Columns и обратиться к нужному столбцу по его имени. Например, если у нас есть столбец с именем «Name» и мы хотим получить значение ячейки в этом столбце для первой строки, мы можем использовать следующий код:
string columnName = "Name"; // имя столбца int rowIndex = 0; // индекс строки object cellValue = dataGridView.Rows[rowIndex].Cells[columnName].Value; Console.WriteLine("Значение строки: " + cellValue);
Пример 3: Использование события CellClick для получения значения строки
Мы также можем использовать событие CellClick для получения значения строки при щелчке на ячейке. В этом случае нам необходимо привязать обработчик события CellClick и использовать свойство CurrentRow для получения текущей строки. Например, мы можем использовать следующий код:
private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e) < int rowIndex = e.RowIndex; // индекс строки int columnIndex = 0; // индекс столбца object cellValue = dataGridView.Rows[rowIndex].Cells[columnIndex].Value; Console.WriteLine("Значение строки: " + cellValue); >
Пример 4: Использование события SelectionChanged для получения значения строки
Еще одним способом получения значения строки в DataGridView является использование события SelectionChanged. Это событие вызывается, когда выбрана новая строка. Мы можем привязать обработчик события SelectionChanged и использовать свойство CurrentRow для получения текущей строки. Например, мы можем использовать следующий код:
private void dataGridView_SelectionChanged(object sender, EventArgs e) < int rowIndex = dataGridView.CurrentRow.Index; // индекс текущей строки int columnIndex = 0; // индекс столбца object cellValue = dataGridView.Rows[rowIndex].Cells[columnIndex].Value; Console.WriteLine("Значение строки: " + cellValue); >
В заключение
В этой статье мы рассмотрели несколько способов получения значения строки в DataGridView в C#. Мы рассмотрели получение значения по индексу и по имени столбца, а также использование событий CellClick и SelectionChanged. Надеюсь, эти примеры помогут вам в ваших проектах на C#.
Как получить значение ячейки в DataGridView в C#
DataGridView — это удобный и мощный элемент управления в Windows Forms, который позволяет отображать и редактировать данные в виде таблицы. Одной из основных задач при работе с DataGridView является получение значения ячейки. В этой статье рассмотрим несколько способов получения значения ячейки в DataGridView с использованием языка программирования C#.
Способ 1: Использование индексов столбца и строки
Первый способ заключается в использовании индексов столбца и строки для получения значения ячейки. В DataGridView каждая ячейка имеет свой индекс столбца и строки, и мы можем использовать эти индексы для получения значения.
int row = 0; // индекс строки int column = 0; // индекс столбца // Получение значения ячейки var value = dataGridView.Rows[row].Cells[column].Value;
В приведенном выше примере мы используем свойство Rows, чтобы получить доступ к строке с нужным индексом, а затем используем свойство Cells для доступа к ячейке в этой строке. Затем мы используем свойство Value для получения значения ячейки.
Способ 2: Использование имени столбца и индекса строки
Второй способ заключается в использовании имени столбца и индекса строки для получения значения ячейки. В DataGridView каждая ячейка имеет свое имя столбца, и мы можем использовать это имя вместо индекса столбца для получения значения.
string columnName = "ColumnName"; // имя столбца int row = 0; // индекс строки // Получение значения ячейки var value = dataGridView.Rows[row].Cells[columnName].Value;
В приведенном выше примере мы используем имя столбца вместо индекса столбца для доступа к ячейке. Затем мы используем свойство Value для получения значения ячейки.
Способ 3: Использование события CellClick
Третий способ заключается в использовании события CellClick для получения значения ячейки. Событие CellClick вызывается при щелчке пользователя на ячейке, и мы можем получить значение ячейки внутри этого события.
private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e) < int row = e.RowIndex; // индекс строки int column = e.ColumnIndex; // индекс столбца // Получение значения ячейки var value = dataGridView.Rows[row].Cells[column].Value; >
В приведенном выше примере мы используем свойства RowIndex и ColumnIndex объекта DataGridViewCellEventArgs для получения индексов строки и столбца. Затем мы используем эти индексы для доступа к ячейке и получения значения.
Способ 4: Использование итерации по ячейкам
Четвертый способ заключается в использовании итерации по всем ячейкам в DataGridView для получения значений. Мы можем использовать циклы для перебора всех строк и столбцов и получения значений ячеек.
foreach (DataGridViewRow row in dataGridView.Rows) < foreach (DataGridViewCell cell in row.Cells) < var value = cell.Value; // Дополнительная обработка значения ячейки >>
В приведенном выше примере мы используем два вложенных цикла: первый цикл перебирает все строки в DataGridView, а второй цикл перебирает все ячейки в каждой строке. Затем мы можем получить значение каждой ячейки с помощью свойства Value и выполнить дополнительную обработку, если необходимо.
Заключение
В этой статье мы рассмотрели несколько способов получения значения ячейки в DataGridView с использованием языка программирования C#. Вы можете использовать любой из этих способов в зависимости от ваших потребностей и предпочтений. Удачи в работе с DataGridView!
Практическое руководство. Получение информации о выделенных пользователем ячейках, строках и столбцах элемента управления DataGridView в Windows Forms
Выбранные ячейки, строки или столбцы можно получить из элемента управления DataGridView с помощью соответствующих свойств: SelectedCells, SelectedRows и SelectedColumns. В следующих процедурах вы получите выбранные ячейки и отобразите их индексы строк и столбцов в строке MessageBox.
Получение выбранных ячеек в элементе управления DataGridView
- Используйте свойство SelectedCells.
Примечание. Чтобы избежать отображения потенциально большого количества ячеек, используйте метод AreAllCellsSelected.
private void selectedCellsButton_Click(object sender, System.EventArgs e) < Int32 selectedCellCount = dataGridView1.GetCellCount(DataGridViewElementStates.Selected); if (selectedCellCount >0) < if (dataGridView1.AreAllCellsSelected(true)) < MessageBox.Show("All cells are selected", "Selected Cells"); >else < System.Text.StringBuilder sb = new System.Text.StringBuilder(); for (int i = 0; i < selectedCellCount; i++) < sb.Append("Row: "); sb.Append(dataGridView1.SelectedCells[i].RowIndex .ToString()); sb.Append(", Column: "); sb.Append(dataGridView1.SelectedCells[i].ColumnIndex .ToString()); sb.Append(Environment.NewLine); >sb.Append("Total: " + selectedCellCount.ToString()); MessageBox.Show(sb.ToString(), "Selected Cells"); > > >
Private Sub selectedCellsButton_Click( _ ByVal sender As Object, ByVal e As System.EventArgs) _ Handles selectedCellsButton.Click Dim selectedCellCount As Integer = _ dataGridView1.GetCellCount(DataGridViewElementStates.Selected) If selectedCellCount > 0 Then If dataGridView1.AreAllCellsSelected(True) Then MessageBox.Show("All cells are selected", "Selected Cells") Else Dim sb As New System.Text.StringBuilder() Dim i As Integer For i = 0 To selectedCellCount - 1 sb.Append("Row: ") sb.Append(dataGridView1.SelectedCells(i).RowIndex _ .ToString()) sb.Append(", Column: ") sb.Append(dataGridView1.SelectedCells(i).ColumnIndex _ .ToString()) sb.Append(Environment.NewLine) Next i sb.Append("Total: " + selectedCellCount.ToString()) MessageBox.Show(sb.ToString(), "Selected Cells") End If End If End Sub
Получение выбранных строк в элементе управления DataGridView
- Используйте свойство SelectedRows. Чтобы разрешить пользователям выбирать строки, необходимо задать свойству SelectionMode значение FullRowSelect или RowHeaderSelect.
private void selectedRowsButton_Click(object sender, System.EventArgs e) < Int32 selectedRowCount = dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected); if (selectedRowCount >0) < System.Text.StringBuilder sb = new System.Text.StringBuilder(); for (int i = 0; i < selectedRowCount; i++) < sb.Append("Row: "); sb.Append(dataGridView1.SelectedRows[i].Index.ToString()); sb.Append(Environment.NewLine); >sb.Append("Total: " + selectedRowCount.ToString()); MessageBox.Show(sb.ToString(), "Selected Rows"); > >
Private Sub selectedRowsButton_Click( _ ByVal sender As Object, ByVal e As System.EventArgs) _ Handles selectedRowsButton.Click Dim selectedRowCount As Integer = _ dataGridView1.Rows.GetRowCount(DataGridViewElementStates.Selected) If selectedRowCount > 0 Then Dim sb As New System.Text.StringBuilder() Dim i As Integer For i = 0 To selectedRowCount - 1 sb.Append("Row: ") sb.Append(dataGridView1.SelectedRows(i).Index.ToString()) sb.Append(Environment.NewLine) Next i sb.Append("Total: " + selectedRowCount.ToString()) MessageBox.Show(sb.ToString(), "Selected Rows") End If End Sub
Получение выбранных столбцов в элементе управления DataGridView
- Используйте свойство SelectedColumns. Чтобы разрешить пользователям выбирать столбцы, необходимо задать свойству SelectionMode значение FullColumnSelect или ColumnHeaderSelect.
private void selectedColumnsButton_Click(object sender, System.EventArgs e) < Int32 selectedColumnCount = dataGridView1.Columns .GetColumnCount(DataGridViewElementStates.Selected); if (selectedColumnCount >0) < System.Text.StringBuilder sb = new System.Text.StringBuilder(); for (int i = 0; i < selectedColumnCount; i++) < sb.Append("Column: "); sb.Append(dataGridView1.SelectedColumns[i].Index .ToString()); sb.Append(Environment.NewLine); >sb.Append("Total: " + selectedColumnCount.ToString()); MessageBox.Show(sb.ToString(), "Selected Columns"); > >
Private Sub selectedColumnsButton_Click( _ ByVal sender As Object, ByVal e As System.EventArgs) _ Handles selectedColumnsButton.Click Dim selectedColumnCount As Integer = dataGridView1.Columns _ .GetColumnCount(DataGridViewElementStates.Selected) If selectedColumnCount > 0 Then Dim sb As New System.Text.StringBuilder() Dim i As Integer For i = 0 To selectedColumnCount - 1 sb.Append("Column: ") sb.Append(dataGridView1.SelectedColumns(i).Index.ToString()) sb.Append(Environment.NewLine) Next i sb.Append("Total: " + selectedColumnCount.ToString()) MessageBox.Show(sb.ToString(), "Selected Columns") End If End Sub
Компиляция кода
Для этого примера требуются:
- элементы управления Button с именами selectedCellsButton , selectedRowsButton и selectedColumnsButton , каждый из которых имеет обработчики для присоединенного события Click;
- элемент управления DataGridView с именем dataGridView1 ;
- ссылки на сборки System, System.Windows.Forms и System.Text.
Отказоустойчивость
При выборе большого количества ячеек, строк или столбцов коллекции, описанные в этом разделе, работают неэффективно. Дополнительные сведения об использовании этих коллекций с большим объемом данных см. в статье Масштабирование элемента управления DataGridView Windows Forms.
См. также
- DataGridView
- SelectionMode
- AreAllCellsSelected
- SelectedCells
- SelectedRows
- SelectedColumns
- Выделение данных и операции с буфером обмена в элементе управления DataGridView в Windows Forms
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Ввести координаты и получить значение ячейки DataGridView в C#
Есть таблица DataGridView с данными: например 6 столбцов и 4 строки. Хочу сделать так, чтобы можно было вручную ввести (в текстбоксы) координаты определённой ячейки, например строка 3, столбец 2 и вывести данные с этой ячейки в TextBox. Также нужно, чтобы это выполнялось независимо от того, выделена ли мышью какая-то ячейка в DataGridView. Как это будет выглядеть в коде?
Отслеживать
задан 15 окт 2018 в 22:23
29 3 3 бронзовых знака
вы как то сами пытались решить вашу задачу?
16 окт 2018 в 9:18
Чтобы получить ячейку укажите индексы в квадратных скобках: dataGridView[columnIndex, rowIndex] .
16 окт 2018 в 12:42
Кстати, что используете: WinForms, WPF или, может, у вас вообще веб-приложение?
16 окт 2018 в 12:43
tym32167, сам попробовал бы, но незнаю, какие свойства и методы для этого использовать.
17 окт 2018 в 13:20
Alexander Petrov, WinForms
17 окт 2018 в 13:21
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Не поняла вашего беспокойства по поводу SelectionChanged . Получение значения ячейки зависит только от указанных вами индексов строки и столбца.
Допустим, вам надо записать значение ячейки из таблицы dataGridView1 в label , тогда, учитывая, что вы заранее получили ранее введенные в textBox’ы индексы ячейки и столбца:
label1.Text = Convert.ToString(dataGridView1.Rows[row].Cells[cell].Value);
label2.Text = Convert.ToString(dataGridView1[cell, row].Value);
Ну и, конечно, если не знаете методов и свойств, не стесняйтесь заглядывать в MSDN:
- Про DataGridView
- Про работу со строками и столбцами