Выбираем/получаем выбранную строку/ячейку в DataGridView

Задача: получить выбранную в данный момент строку/ячейку DataGridView и/или выбрать ее. На самом деле это одна и та же задача, если количество строк и столбцов в гриде может непредсказуемо меняться. Мы конечно можем получить выбранный столбец через свойство SelectedRows, но для этого свойство SelectionMode должно быть установлено в FullRowSelect или RowHeaderSelect. Универсальный метод будет всегда работать через выбранную ячейку и свойство SelectedCells или CurrentCell

 
int selRowNum = _someDataGridView.SelectedCells[0].RowIndex; 

// или так

  int selRowNum = _someDataGridView.CurrentCell.RowIndex;

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

 
int rowNum = 1;
DataGridViewCell cell = _someDataGridView.Rows[rowNum].Cells[0];
_someDataGridView.CurrentCell = cell;
_someDataGridView.CurrentCell.Selected = true; // в некоторых случаях без этого не работает

Упростить себе жизнь можно парой простых методов

public static void SelectDataGridViewCell(DataGridView dataGridView, int rowIndex, int cellIndex)
{
	DataGridViewCell cell = dataGridView.Rows[rowIndex].Cells[0];
        dataGridView.CurrentCell = cell;
        dataGridView.CurrentCell.Selected = true;
}

public static void SelectDataGridViewRow(DataGridView dataGridView, int rowNum)
{
	SelectDataGridViewCell(dataGridView, rowNum, 0);
}

public static int CalculateNewSelRowIndex(int oldRowCount, int newRowCount, int oldRowIndex)
{
	// если осталась только одна строка
	int newRowIndex = 0;

	if (newRowCount >= oldRowCount)
	{
		newRowIndex = oldRowIndex;
	}
	else if (newRowCount > 1)
	{
		newRowIndex = newRowCount - 1;
	}

	return newRowIndex;
}

How to: Get and Set the Current Cell in the Windows Forms DataGridView Control
DataGridView.CurrentCell Property
DataGridView.SelectedCells Property
DataGridView: How to select first cell in current row when MultiSelect is true
DataGridView.SelectedRows Property


Комментарии

Выбираем/получаем выбранную строку/ячейку в DataGridView — Комментарии (2)

  1. Напишите как выбрать несколько строк используя Ctrl и передать их номера программе

Добавить комментарий для гость Отменить ответ

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


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>