2013-09-27 37 views
0

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

而我想知道如何调用一个函数内的事件。现在我可以从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(....)

+4

'_e = null'引用空引用将导致'NullReferenceException'。你想要达到什么目标?你想要什么'_e.RowIndex'返回? –

+0

'_e.RowIndex'是告诉程序从DataGridView中选择了哪一行 – Kaoru

+1

让我看看你的代码在哪里调用'UpdateQuantityDataGridView' –

回答

3

您正在设置_enull然后尝试使用它将创建一个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; 

} 

(正如在评论中提到,这是假定你传递的DataGridViewCellEventArs一个实例e。)

+0

,肯定不会工作,因为'e'是'EventArgs'类型。 –

+0

我试过'dataGridView [“Product Code”,(DataGridViewCellEventArgs)_e.RowIndex] .Value' 但是'_e'在当前内容中不存在。 – Kaoru

+1

@neoistheone和'DataGridViewCellEventArgs'是从'EventArgs'派生出来的,所以它可以工作,如果这是'e'传入的内容,这一切都取决于如何调用'UpdateQuantityDataGridView',我们需要看到代码在哪里他可以订阅该事件或自己调用该函数。 –

4

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

+1

我删除了“不能留下评论”位。你所说的是答案,不需要把它作为评论。 –

0

要设置_enull

然后,您尝试访问其RowIndex属性,这是什么投掷NullReferenceException

你所有的代码示例试图做的是将一个参数添加到cmdSelect。你究竟想要完成什么?

+0

问题可以在评论中 –