2016-06-21 2 views
2

У меня есть DataGridView, для которого после аннулирования значения ячейки я хотел бы выделить ячейку (даже если она является текущей ячейкой), чтобы пользователь мог видеть значение ячейки можно заменить любым нажатием клавиши. Если попробовали оба из них не радость:C# Как выделить текущую ячейку DataGridVeiw в фокусе

dgv.CurrentCell = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex]; 

... и ...

dgv.ClearSelection(); 
dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected = true; 

Любые мысли будут весьма признателен. Благодарю.

UPDATE

Мне нравится ячейку с недопустимыми данными, чтобы перейти от вида:

enter image description here

... чтобы выглядеть примерно так (я заполнил пространство в Paint) :

enter image description here

Я присутствует сделав это в обработчике событий CellValidating для DataGridView. Будет ли это работать лучше в обработчике событий CellValidated?

+0

Пытались ли вы с 'Selected' собственности? –

+0

Да, установка свойства «Selected» отображается как мой второй подход в сообщении. –

+0

Oooppss, я пропустил это. Можете ли вы определить, что вы подразумеваете под «выделить ячейку»? Вы имеете в виду, вы хотите установить фокус в нем, чтобы иметь возможность редактировать эту ячейку? Если да, попробуйте метод 'BeginEdit (true)'. –

ответ

0

Чтобы установить ячейку в текущей ячейке DataGridView вы можете присвоить его CurrentCell свойству него:

dataGridView1.CurrentCell = dataGridView1.Rows[1].Cells[2]; 

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

dataGridView1.BeginEdit(true); 

Для отмены выбора всех выбранных ячеек, вы можете использовать ClearSelection метод:

dataGridView1.ClearSelection(); 

Чтобы изменить цвет фона активной ячейки, когда он находится в режиме редактирования, ручка CellFormatting события:

void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
{ 
    if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex] == dataGridView1.CurrentCell) 
     e.CellStyle.BackColor = Color.Red; 
} 
+0

Изменила ли выбранную ячейку на другую ячейку, а затем обратно в нужную ячейку, возможно, получили желаемые результаты выделения всей ячейки? –

+0

«CurrentCell» - это ячейка, которую пользователь сейчас редактирует и в настоящее время проверяется в обработчике событий CellValidating. –

+0

Я тестирую это решение: у меня есть сетка и кнопка, и я пишу эти коды в обработчике событий 'Click'' Button', и он работает правильно. –