Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在RowEnter事件处理程序中获取新行的行_C#_Datagridview - Fatal编程技术网

C# 在RowEnter事件处理程序中获取新行的行

C# 在RowEnter事件处理程序中获取新行的行,c#,datagridview,C#,Datagridview,我有一个带有BindingSource的DataGridView。通过单击添加新行时,将触发RowEnter事件。出于某种原因,它是一个CellEvent,而不是RowEvent,因此我在参数中没有获得Row属性。RowIndex属性为0(有许多行-myDataGridView。行[0]是错误的)。如何获取对实际行或其后面的DataBoundItem的引用 编辑:看起来我实际上得到了两个RowEnter事件。第一个具有行索引0,第二个具有正确的行索引。现在的问题是,我无法区分这些事件中的第一个事

我有一个带有BindingSource的DataGridView。通过单击添加新行时,将触发RowEnter事件。出于某种原因,它是一个CellEvent,而不是RowEvent,因此我在参数中没有获得Row属性。RowIndex属性为0(有许多行-myDataGridView。行[0]是错误的)。如何获取对实际行或其后面的DataBoundItem的引用


编辑:看起来我实际上得到了两个RowEnter事件。第一个具有行索引0,第二个具有正确的行索引。现在的问题是,我无法区分这些事件中的第一个事件和从实际第一行抛出的合法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;
    }
}
private void dataGridView1\u行输入(对象发送方,
DataGridViewCellEventArgs(e)
{
对于(int i=0;i

来源:

您发布的问题可能与数据网格事件顺序和责任的特殊性有关

摘自:

DataGridView.RowEnter发生在DataGridView.Selection如此更改之前 获取最新数据DataGridView毫无价值

SelectionChanged似乎是行更改时调用的最后一个事件。 如果有人知道以后的事情,请告诉我。 DataGridView.SelectionChanged具有新的 dataGridView1.CurrentCell.RowIndex,如果用户单击了中的新行 DataGridView

DataGridView.SelectionChanged具有旧的 dataGridView1.CurrentCell.RowIndex如果程序使用以下方式移动行:

现在,SelectedRows[0]。索引将在上返回新的行索引 单击或编程移动


或者,您的问题实际上源于底层绑定和绑定集合中的一些问题。

他说RowIndex是0,而实际上不应该是。这可能是由于绑定集合引起的一些问题。
    dataGridView1.ClearSelection();
    dataGridView1.CurrentCell = dataGridView1.Rows[3].Cells[0]; // Or whatever new row you want
    dataGridView1.Rows[3].Selected = true;