为什么DataGridView SelectionChanged事件没有触发?

时间:2012-01-02 18:57:33

标签: c# winforms datagridview

在下面的代码中,通过datagridview1_SelectionChanged事件处理程序中的代码更改了选择后触发的datagridview1_RowsAdded事件,CurrentRow属性为null。但是我只是在datagridview1_RowsAdded处理程序中设置它并且它不是空的。

但是,如果我在datagridview1_RowsAdded处理程序中注释两行并通过鼠标单击任意行选择行,则程序运行正常。谁能告诉我为什么会这样?

这是我的代码:

private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
    dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[1];
    dataGridView1.CurrentCell.Selected = true;
}

private void dataGridView1_SelectionChanged(object sender, EventArgs e)
{
    if (dataGridView1.CurrentRow != null)
    {
        if (dataGridView1.CurrentRow.Index != -1)
        {
           dataGridView2.Enabled = true;
           dataGridView3.Enabled = true;
           dataGridView4.Enabled = true;
        }
        else
        {
           dataGridView2.Enabled = false;
           dataGridView3.Enabled = false;
           dataGridView4.Enabled = false;
        }
    }
    else
    {
        dataGridView2.Enabled = false;
        dataGridView3.Enabled = false;
        dataGridView4.Enabled = false;
    }
}

1 个答案:

答案 0 :(得分:1)

RowsAdded方法中,您选择了当前单元格而不是当前行。您可以选择当前行:

dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Selected = true;