У меня есть представление сетки, которое имеет столбец флажка, и я хочу инициировать событие рисунка, как только значение ячейки переключается. Я попробовал ValueChaged и CellEndEdit и BeginEdit, и выбрал режим выбора в качестве CellSelect. Что касается первые 2 события, событие было инициировано после окончания режима редактирования, как перемещение из текущей ячейки или движение назад и вперед. Это - просто странное поведение.
Есть ли что-нибудь, что инициировало событие на представлении сетки, как только значение ячейки изменяется?
Попробуйте подключиться к событию CellContentClick. DataGridViewCellEventArgs будет иметь ColumnIndex и RowIndex, чтобы вы могли узнать, действительно ли был нажат ChecboxCell. Преимущество этого события в том, что оно сработает только в том случае, если был установлен фактический флажок. Если вы нажмете на белую область ячейки вокруг флажка, он не сработает. Таким образом, вам практически гарантировано, что значение флажка было изменено при срабатывании этого события. Затем вы можете вызвать Invalidate (), чтобы инициировать событие рисования, а также вызов EndEdit (), чтобы инициировать конец редактирования строки, если вам это нужно.
В конце концов я реализовал это так
private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.ColumnIndex >= 0 && e.RowIndex >= 0)
{
if (dataGridView1[e.ColumnIndex, e.RowIndex].GetContentBounds(e.RowIndex).Contains(e.Location))
{
cellEndEditTimer.Start();
}
}
}
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{ /*place your code here*/}
private void cellEndEditTimer_Tick(object sender, EventArgs e)
{
dataGridView1.EndEdit();
cellEndEditTimer.Stop();
}