如何调用函数内的事件?因为我遇到错误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(....)
答案 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
添加参数。你到底想要完成什么?