我在C#WinForms应用程序中遇到一个特殊问题,其中在父窗体中使用了服务器用户控件。 以下是用户控件问题的代码:
private void LoadMCQuestionScreen(clsQuestion MCQuestion)
{
ucMultiChoiceQuestion MCQuestionScreen = new ucMultiChoiceQuestion(MCQuestion, Players, glbintQuestionIndex,
glbblTransYesOrNo,
lstTransList.ElementAt(glbintQuestionIndex));
MCQuestionScreen.Parent = this;
MCQuestionScreen.Show();
}
以下是发生崩溃的用户控件的代码块:
private void QuestionIsAnswered(bool TimeExpired)
{
//MessageBox.Show("Points: " + glbintPoints.ToString(), "Info...", MessageBoxButtons.OK, MessageBoxIcon.Error);
//Create a reference to frmMain.
if (TimeExpired == true)
glbblAnsweredCorrectly = false;
frmGame form1 = (frmGame)this.Parent;
**form1.LoadAnswerResponseScreen(glbblAnsweredCorrectly, glbstrAnsweringPlayer);**
spTickTock.Stop();
MCPlayer.Dispose();
tmrMCTimer.Dispose();
if (pbQuestionImage.Image != null)
pbQuestionImage.Image.Dispose();
this.Dispose();
}
我在粗线上得到NullReferenceException
-
“对象引用未设置为对象的实例。”
在该行中,form1为null。发生崩溃时,此方法和用户控件MCQuestionScreen
已经处理完毕。
我在“LoadMCQuestionScreen
”方法的顶部尝试了此代码:
foreach (UserControl uctrl in this.Controls)
uctrl.Dispose();
该代码不起作用,2天后我仍然无法确定问题的实际来源。
答案 0 :(得分:0)
该错误消息表示您尝试引用尚未实例化的对象。您可能必须这样做:frmGame form1 = new (frmGame)this.Parent;
或者它可能是您的代码中我们看不到的其他位置。