#c# #datagridview
#c# #datagridview
Вопрос:
У меня есть DataGridView с источником привязки. Когда я добавляю новую строку, щелкая по ней, запускается событие RowEnter. По какой-то причине это CellEvent, а не RowEvent, поэтому я не получаю свойство Row в аргументах. Свойство RowIndex равно 0 (строк много — myDataGridView.Rows[0] неверно). Как мне получить ссылку на фактическую строку или элемент DataBoundItem за ней?
РЕДАКТИРОВАТЬ: кажется, что я на самом деле получаю два события RowEnter. Первый имеет RowIndex 0, а второй имеет правильный. Проблема сейчас в том, что я не могу отличить первое из этих событий от законного RowEnter, выданного из фактической первой строки.
Ответ №1:
Вы можете получить ее с помощью e.RowIndex
private void dataGridView1_RowEnter(object sender,
DataGridViewCellEventArgs e)
{
for (int i = 0; i < dataGridView1.Rows[e.RowIndex].Cells.Count; i )
{
dataGridView1[i, e.RowIndex].Style.BackColor = Color.Yellow;
}
}
Источник: DataGridView.Событие RowEnter
Комментарии:
1. Он говорит, что RowIndex равен 0, когда этого не должно быть. Возможно, это какая-то проблема из-за связанной коллекции.
Ответ №2:
Возможно, ваша проблема как-то связана с особенностями последовательности и ответственности событий сетки данных.
DataGridView.RowEnter происходит перед DataGridView.SelectionChanged, поэтому он бесполезен для получения последних данных DataGridView.
SelectionChanged, по-видимому, является последним событием, вызываемым при изменении строки. Пожалуйста, дайте мне знать, если кто-нибудь знает о более позднем событии. DataGridView.SelectionChanged имеет новую ячейку dataGridView1.CurrentCell.RowIndex, если пользователь нажал на новую строку в DataGridView
DataGridView.SelectionChanged имеет старую dataGridView1.CurrentCell.RowIndex, если программа перемещает строку с помощью:
dataGridView1.ClearSelection();
dataGridView1.CurrentCell = dataGridView1.Rows[3].Cells[0]; // Or whatever new row you want
dataGridView1.Rows[3].Selected = true;
И теперь … , selectedRows[0] .Индекс вернет новый RowIndex при
щелчке или запрограммированном перемещении!!!
Или ваша проблема на самом деле связана с какой-то проблемой в базовой привязке и связанной коллекции.