BindingSource事件不允许我获取当前dgv行的索引

时间:2012-03-15 21:21:18

标签: c# winforms c#-4.0

此代码适用于其他任何地方..表单加载,按钮单击等。但是当我将它添加到我的tripsBindingSource_PositionChanged时,它表示对象引用在获取所选行索引时未设置为对象的实例。我假设还没有选定的行,但为什么它会在表单加载时工作?它正在运行时制作我的应用炸弹。我该怎么做才能解决这个问题?谢谢!

private void tripsBindingSource_PositionChanged(object sender, EventArgs e)
{ 
    //get selected row index
    int index = this.dgvTripGrid.CurrentRow.Index;
    //get pk of selected row using index
    string cellValue = dgvTripGrid["pkTrips", index].Value.ToString();
    //change pk string to int
    int pKey = Int32.Parse(cellValue);
    ...
}

1 个答案:

答案 0 :(得分:1)

你必须首先检查行是否为空,然后只检查它是否为空

private void tripsBindingSource_PositionChanged(object sender, EventArgs e)
{ 
    // something like
    if(dgvTripGrid.CurrentRow != null)
    {
        //get selected row index
        int index = this.dgvTripGrid.CurrentRow.Index;
        //get pk of selected row using index
        string cellValue = dgvTripGrid["pkTrips", index].Value.ToString();
        //change pk string to int
        int pKey = Int32.Parse(cellValue);
        ...
    }
}