我知道这是一个非常常见的错误——但是作为一个 C# 新手,我发现通过查看其他帖子很难找到问题的原因,因为问题很模糊并且可以应用于很多场景。因此,为什么我要开始自己的问题。希望通过这样做我可以更多地了解错误,所以我希望你们不要介意。
据我了解,当您尝试引用非静态对象时会发生此错误,就好像它是静态对象一样。我的想法是否正确?
我的问题是这样的:我正在尝试创建自己的自定义对话框(而不是使用标准的 winforms)。所以我有以下代码:
public partial class Dialog : Form
{
public Dialog(string header, string msg, bool closeable, int buttons)
{
if (!closeable)
btnX.Hide();
if (header != null || header != String.Empty)
lblHeader.Text = header;
if (msg != null || msg != String.Empty)
lblMessage.Text = msg;
InitializeComponent(); //Problem is here, this should be at the top.
}
private void btnX_Click(object sender, EventArgs e)
{
Close();
}
}
我正在Dialog
使用以下行调用此类:
Dialog dlg = new Dialog("HEADER", "HELLO", true, buttonChoice);
dlg.ShowDialog();
但我得到了Object reference not set to an instance of an object
上线:
lblHeader.Text = header;
(而且我想我也会在“消息”行中得到它)。
有人可以告诉我我在这里做错了什么吗?谢谢!
更新答案InitializeComponent()
:在调用函数之前不应引用类中的对象。