在RowEnter事件处理程序中获取新行的行
本文关键字:新行 获取 RowEnter 事件处理 程序 | 更新日期: 2023-09-27 18:09:12
我有一个DataGridView与BindingSource。当我通过单击添加新行时,会触发RowEnter事件。出于某种原因,它是CellEvent,而不是RowEvent,所以我没有在参数中获得Row属性。RowIndex属性是0(有很多行- myDataGridView。Rows[0]是错误的)。我如何获得对实际行或其背后的DataBoundItem的引用?
编辑:似乎我实际上得到两个RowEnter事件。第一个RowIndex是0,第二个RowIndex是正确的。现在的问题是,我无法区分这些事件中的第一个事件和从实际第一行抛出的合法RowEnter。
您可以通过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事件
您的问题可能与数据网格事件排序和责任的特殊性有关。
摘自http://social.msdn.microsoft.com/forums/windows/en-US/14c08e1f-7819-4687-8e4e-1df8632a8431/datagridviewselectionchanged-unexpected-behavior:
DataGridView。RowEnter发生在DataGridView之前。SelectionChanged所以获取最新数据DataGridView是毫无价值的。
SelectionChanged似乎是行更改时调用的最后一个事件。如果有人知道以后的事件,请告诉我。DataGridView。SelectionChanged有newdataGridView1.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]。Index将返回新的RowIndex要么点击或编程移动!!
或者你的问题实际上是源于底层绑定和绑定集合的问题