C# 特定秒数后出现空引用异常
我得到一个空引用异常,在我用注释表示的行上。有人知道为什么会这样吗C# 特定秒数后出现空引用异常,c#,C#,我得到一个空引用异常,在我用注释表示的行上。有人知道为什么会这样吗 var form = Form.ActiveForm as Form1; var doSave = MessageBox.Show("Would you like to save this measurement?", "Save Measurement", MessageBoxButtons.YesNo,
var form = Form.ActiveForm as Form1;
var doSave = MessageBox.Show("Would you like to save this measurement?",
"Save Measurement",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
if (doSave == DialogResult.Yes) // User wants to save the current measurement.
{
curName = ShowDialog("Measurement Name", "Save Measurement");
// ERROR HERE ****
int ret = form.databaseClass.GetFirstSoundReadyTestOccurrence(form.testNumber.Text);
我敢打赌这是Form.ActiveForm不是Form1类型的情况 这应该很容易复制。在进入此代码之前,请确保您的活动表单不是Form1类型。换句话说。。。确保此代码运行时其他窗体处于活动状态 下面的编辑将修复出现这种情况时的问题,但您确实需要一种更可靠的方式来获取表单。如果不了解更多有关设计的信息,就很难推荐更好的获取表单的方法
var form = Form.ActiveForm as Form1;
if (form != null)
{
var doSave = MessageBox.Show("Would you like to save this measurement?",
"Save Measurement",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
if (doSave == DialogResult.Yes) // User wants to save the current measurement.
{
curName = ShowDialog("Measurement Name", "Save Measurement");
// ERROR HERE ****
int ret = form.databaseClass.GetFirstSoundReadyTestOccurrence(form.testNumber.Text);
}
}
我敢打赌这是Form.ActiveForm不是Form1类型的情况 这应该很容易复制。在进入此代码之前,请确保您的活动表单不是Form1类型。换句话说。。。确保此代码运行时其他窗体处于活动状态 下面的编辑将修复出现这种情况时的问题,但您确实需要一种更可靠的方式来获取表单。如果不了解更多有关设计的信息,就很难推荐更好的获取表单的方法
var form = Form.ActiveForm as Form1;
if (form != null)
{
var doSave = MessageBox.Show("Would you like to save this measurement?",
"Save Measurement",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);
if (doSave == DialogResult.Yes) // User wants to save the current measurement.
{
curName = ShowDialog("Measurement Name", "Save Measurement");
// ERROR HERE ****
int ret = form.databaseClass.GetFirstSoundReadyTestOccurrence(form.testNumber.Text);
}
}
发布异常详细信息,包括堆栈跟踪——否则人们只能猜测您的问题。我认为
form
为null,因此form.ActiveForm
为null或者不是Form1
的实例。否则,form.databaseClass
或form.testNumber
为空。-调试代码以查看哪个对象为空。如果它没有一直复制:是否确定活动窗体始终是Form1的实例?否则,Form.ActiveForm as Form1
将返回null,稍后您将得到一个NRE。从@jods的评论中,您可以学到的是,如果您不打算明确处理结果为null
的情况,则决不要将as
运算符用于强制转换。改为使用格式转换(Form1)(form.ActiveForm)
(不需要最后一个括号)。发布异常详细信息,包括堆栈跟踪——否则人们只能猜测您的问题。我猜想form
为null,因此form.ActiveForm
为null或者不是Form1
的实例。否则,form.databaseClass
或form.testNumber
为空。-调试代码以查看哪个对象为空。如果它没有一直复制:是否确定活动窗体始终是Form1的实例?否则,Form.ActiveForm as Form1
将返回null,稍后您将得到一个NRE。从@jods的评论中,您可以学到的是,如果您不打算明确处理结果为null
的情况,则决不要将as
运算符用于强制转换。改为使用格式转换(Form1)(form.ActiveForm)
(不需要最后一个括号)。