0

如何在函数内调用事件?因为我有一个错误Object reference not set to instance of an object并且错误指出:_e.RowIndex

我想知道如何在函数中调用事件。现在我可以调用一个事件new EventHandler(....),但现在我想在一个函数中调用一个事件,它给了我错误Object reference not set to instance of an object

这是代码:

private void UpdateQuantityDataGridView(object sender, EventArgs e)
{
  DataGridViewCellEventArgs _e = null;

  cmdSelect.Parameters.Add( "ProductCode" , System.Data.OleDb.OleDbType.VarChar ) ;
  cmdSelect.Parameters[ "ProductCode" ].Value = dataGridView1[ "Product Code" , _e.RowIndex].Value;

}

上面的代码是正确的方法吗?

已编辑

这是我调用函数的地方UpdateQuantityDataGridView

if (_choice.comboBox1.Text == "English")
                {
                    System.Media.SoundPlayer _sounds = new System.Media.SoundPlayer(@"C:\Windows\Media\Windows Exclamation.wav");
                    _sounds.Play();
                    MessageBox.Show("Updated Successfully!", "Updated");

                    ShowButtons(sender, e);

                    DisableColumnEdited(sender, e);

                    UpdateQuantityDataGridView(sender, e);
                }

这是我的情况:

当用户在 DataGridView 中编辑数据并单击“确定”按钮时,上面的代码将执行并从 DataGridView 更新数据库,这就是我想DataGridViewCellEventArgs在函数内部访问的原因。当我通过使用调用它时,我无法完成和工作new EventHandler(....)

4

3 回答 3

4

您正在将变量 _e 设置为 null。然后,当您从未设置时,您正在引用 _e.RowIndex。

于 2013-09-27T17:51:50.733 回答
3

您正在设置然后_e尝试null使用它将创建一个NullReferenceException(如您所发现的)。

我认为你想转换eDataGridViewCellEventArgs而不是创建一个新变量。

private void UpdateQuantityDataGridView(object sender, EventArgs e)
{
  cmdSelect.Parameters.Add( "ProductCode" , System.Data.OleDb.OleDbType.VarChar ) ;
  cmdSelect.Parameters[ "ProductCode" ].Value = dataGridView1[ "Product Code" , ((DataGridViewCellEventArgs)e).RowIndex].Value;

}

(如评论中所述,这假设您正在传递 DataGridViewCellEventArsfor的实例e。)

于 2013-09-27T17:52:19.390 回答
0

您正在设置_enull.

然后,您尝试访问它的RowIndex属性,这就是抛出NullReferenceException.

您的所有代码示例都试图做的是向cmdSelect. 你到底想完成什么?

于 2013-09-27T17:52:31.277 回答