在函数c#中调用一个事件

时间:2013-09-27 17:47:11

标签: c#

如何调用函数内的事件?因为我遇到错误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;

}

上面的代码是否正确?

EDITED

这是我调用函数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(....)

调用时,我无法完成并工作

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

您将_e设置为null,然后尝试使用它,这将创建NullReferenceException(正如您所发现的那样)。

我认为您希望将e转换为DataGridViewCellEventArgs而不是创建新变量。

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;

}

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

答案 2 :(得分:0)

您将_e设为null

然后,您尝试访问其RowIndex属性,这就是抛出NullReferenceException的内容。

您尝试执行的所有代码示例都是向cmdSelect添加参数。你到底想要完成什么?