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

本文关键字:dgv 索引 事件 不允许 允许我 获取 BindingSource | 更新日期: 2023-09-27 18:28:02

此代码适用于其他任何地方。。表单加载、按钮单击等。但当我将其添加到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);
    ...
}

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

您必须首先检查行是否为空,然后仅在不为空时加载

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);
        ...
    }
}