Перейти к содержимому

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

  • автор:

Практическое руководство. Получение информации о выделенных пользователем ячейках, строках и столбцах элемента управления 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 обращение к столбцу и строке (ячейке)

Есть 2 формы 1 форма — водим в TextBox ФИО и телефон, также путем расчета в один из Label выводится сумма к оплате 2 форма — подвешен компонент DatаGridView Вопрос: как в DatаGridView путем обращения добавить данные из TextBox(ов) и Label(ов) ? По возможности в следующем порядке — Фамилия, Имя, Отчество, Телефон, Сумма(заказа).

n = Sell.dataGridView1.RowCount; if (comboBox1.SelectedIndex == 0) label14.Text = ysl.dataGridView2.Rows[n].Cells[n].Value; // = sum; sum = label14.Text Sell.table1TableAdapter.Insert(n + 1, textBox4.Text, textBox3.Text, textBox1.Text, textBox2.Text, label14.Text); // textBox.Text); 

Вот такой набросок с учетом добавления на форму ComboBox (но речь сейчас не об этом). Помогите примером пожалуйста.

Отслеживать

20.2k 6 6 золотых знаков 37 37 серебряных знаков 81 81 бронзовый знак

задан 11 фев 2016 в 18:17

DevilScream DevilScream

91 2 2 серебряных знака 14 14 бронзовых знаков

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

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

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

DataGridView-adding.png

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

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

dataGridView1->Rows->Add();

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

DataGridView-edit-columns.png

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

DataGridView dgv = 0 == tabControl1.SelectedIndex ? ОсновнойDGV : РезервDGV; DataGridViewCellStyle style = dgv.ColumnHeadersDefaultCellStyle; style.Font = new Font(style.Font, FontStyle.Bold); // Жирный текст 

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

dgv.EnableHeadersVisualStyles = false; dgv.ColumnHeadersDefaultCellStyle.BackColor = Color.Navy; dgv.ColumnHeadersDefaultCellStyle.ForeColor = Color.White;

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

// Добавим в dataGridView1 4 строки: dataGridView1->Rows->Add(); dataGridView1->Rows->Add(); dataGridView1->Rows->Add(); dataGridView1->Rows->Add();

// Удалим все строки из dataGridView1:
while (0 != dataGridView1->RowCount) dataGridView1->Rows->RemoveAt(0);

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

dataGridView1->Rows->Clear();

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

int idx = dataGridView1->HitTestInfo->RowIndex;

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

int idx = 2; dataGridView1->CurrentCell = dataGridView1->Rows[idx]->Cells[0];

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

DataGridView-current-row.png

// Необязательный шаг: отмена выделения текущей ячейки,
// чтобы она не подкрашивалась: dataGridView1->CurrentCell->Selected = false;

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

DataGridView current cell remove selection

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

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

int i = 0; //нумерация строк начинается с 0
if ( (dataGridView1->RowCount - 1)  i ) dataGridView1->Rows->Add();
// № строки добавляем в первый столбец Cells[0]: dataGridView1->Rows[i]->Cells[0]->Value = (i+1).ToString();
// Текст добавим во второй столбец Cells[1]: dataGridView1->Rows[i]->Cells[1]->Value = "Текст в ячейке";
i++; //переходим к следующей строке dataGridView1->Rows[i]->Cells[0]->Value = (i+1).ToString(); .

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

private void msgtable(string msg, Color textcolor) < dataGridView1.Rows[rowidx].Cells[2].Style.ForeColor = textcolor; dataGridView1.Rows[rowidx].Cells[2].Value = msg; >
case TCalibReport.ITERATE_OK: msgtable("OK", Color.Green); break; .

dataGridView Cells Style ForeColor

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

Font font = new Font(DataGridView.DefaultFont, FontStyle.Bold); dgv.Rows[ТекущаяСтрока].Cells[ТекущийСтолбец].Style.Font = font;

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

dgv.Rows[ТекущаяСтрока].Cells[УровеньУст.Index].Value = Установлено.ToString("F2", ci); dgv.Rows[ТекущаяСтрока].Cells[УровеньСчит.Index].Value = Считано.ToString("F2", ci);

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

DataGridView Column Name

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

private void dataGridView1_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)

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

DataGridView last empty row

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

dataGridView1.AllowUserToAddRows = false;

1. Все о DataGridView. Учебник site:datagridview.narod.ru.
2. C#: экспорт/импорт DataGridView в XML и HTML.

Практическое руководство. Считывание и установка значения текущей ячейки элемента управления DataGridView в Windows Forms

Для взаимодействия с DataGridView часто требуется программно определить активную ячейку. Также может потребоваться изменить текущую ячейку. Эти задачи можно выполнить с помощью свойства CurrentCell.

Нельзя задать текущую ячейку в строке или столбце со свойством Visible установленным в значение false .

В зависимости от режима выбора элемента управления DataGridView изменение текущей ячейки может изменить выделение. Дополнительные сведения см. в разделе Режимы выделения содержимого элемента управления DataGridView в Windows Forms.

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

  • Используйте свойство CurrentCell элемента управления DataGridView.
private void getCurrentCellButton_Click(object sender, System.EventArgs e) < string msg = String.Format("Row: , Column: ", dataGridView1.CurrentCell.RowIndex, dataGridView1.CurrentCell.ColumnIndex); MessageBox.Show(msg, "Current Cell"); > 
Private Sub getCurrentCellButton_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles getCurrentCellButton.Click Dim msg As String = String.Format("Row: , Column: ", _ dataGridView1.CurrentCell.RowIndex, _ dataGridView1.CurrentCell.ColumnIndex) MessageBox.Show(msg, "Current Cell") End Sub 

Установка текущей ячейки программным способом

  • Установите свойство CurrentCell элемента управления DataGridView. В следующем примере кода в качестве текущей ячейки задана ячейка в строке 0 и столбце 1.
private void setCurrentCellButton_Click(object sender, System.EventArgs e) < // Set the current cell to the cell in column 1, Row 0. this.dataGridView1.CurrentCell = this.dataGridView1[1,0]; >
Private Sub setCurrentCellButton_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles setCurrentCellButton.Click ' Set the current cell to the cell in column 1, Row 0. Me.dataGridView1.CurrentCell = Me.dataGridView1(1, 0) End Sub 

Компиляция кода

Для этого примера требуются:

  • элементы управления Button с именами getCurrentCellButton и setCurrentCellButton ; В Visual C# необходимо присоединить события Click для каждой кнопки к связанному обработчику событий в примере кода;
  • элемент управления DataGridView с именем dataGridView1 ;
  • ссылки на сборки System и System.Windows.Forms.

См. также

  • DataGridView
  • DataGridView.CurrentCell
  • Базовые характеристики столбцов, строк и ячеек элемента управления DataGridView в Windows Forms
  • Режимы выделения содержимого элемента управления DataGridView в Windows Forms

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

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

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