我已经访问过关于StackOverflow的this问题,但没有得到解决问题的方法。
在Windows窗体应用程序中,我包含了一项功能,该功能允许用户双击DataGridView中的一行,并且该特定行中的值显示在子窗体的文本框中。用户现在可以编辑这些值,即可以编辑数量等。
现在,我想将此值(已编辑的数量)分配回同一DataGridView当前行的特定单元格。我从子窗体中获得了这些值,又回到了我的主窗体中,但是当我以一种公共方法将这个编辑后的数量值重新分配给DataGridView时,因此在DataGridView中得到了一个空引用异常。
这是我获取NulledReferenceException的代码。
//A public method to which I have passed the customQuantity from my child form
public void GetSoldItemQuantity(string customQuantity)
{
//assign this customQuantity to an int variable
int globalQuantity = Convert.ToInt32(customQuantity);
if (globalQuantity > 1)
{
//dgvAllSoldItems is the DataGridView from where I have passed
//the currentRow data to the child form. At this stage,
//I have the updated value returned from my child form and is
//currently stored in the globalQuantity variable but I cannot assign it
//back to the grid.
dgvAllSoldItems.CurrentRow.Cells[1].Value = globalQuantity;
}
}
这是我的子窗体上的按钮代码,它将自定义数量值传递给父窗体上的上述公共方法。
private void btnProceedWithNewItemQuantity_Click(object sender, EventArgs e)
{
string newItemQuantity = txtChooseSaleQuantity.Text.Trim();
frmNewSale parentSale = this.Parent as frmNewSale();//now I am getting error the null reference exception on this line in debugger.
parentSale.GetSoldItemQuantity(newItemQuantity);
this.Close();
}
尽管我在子窗体的按钮单击事件上创建了父类的新实例,但这不是正确的方法。因此,我改用this.Parent,但现在我在这一行得到了相同的异常。
答案 0 :(得分:-1)
看到错误的原因是您尚未在函数dvgAllSoldItems
中定义GetSoldItemQuantity
或不可见。
由于我不确定您的函数GetSoldItemQuantity
的上下文。我可以想到一种解决方案,供您引用GridView
对象。那就是将GridView
对象传递给下面的函数:
GetSoldItemQuantity(string customQuantity, DataGridView dgvAllSoldItems)
或者如果您有填充表格的视图模型,则可以返回customQuantity
值并将其作为新的数量值分配到模型中。
如果dvgAllSoldItems
是全局变量(或与GetSoldItemQuantity
函数位于同一类中),则可以使用this.dvgAllSoldItems
来引用全局定义的对象。