我知道这是一个非常常见的错误,但作为C#新手,我发现通过查看其他帖子很难找到问题的原因,因为问题比较模糊,可以适用于许多情况。因此,我要开始提出自己的问题。希望这样做可以让我更好地了解这个错误,所以我希望大家不要介意。
据我所知,当您尝试将非静态对象引用为静态对象时,就会出现此错误。我的想法正确吗?
我的问题如下: 我正在尝试创建自己的自定义对话框框(而不是使用标准的winforms对话框框)。所以我有以下代码:
据我所知,当您尝试将非静态对象引用为静态对象时,就会出现此错误。我的想法正确吗?
我的问题如下: 我正在尝试创建自己的自定义对话框框(而不是使用标准的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();
但我在以下行中得到了一个“对象引用未设置为对象实例”的错误:
lblHeader.Text = header;
(我也认为我会在'message'这行上遇到它)。
有人能告诉我这里我做错了什么吗?谢谢!
更新答案:在调用InitializeComponent()
函数之前,不应引用类内部的对象。
if (header != null || header != String.Empty)
替换为if(!String.IsNullOrEmpty(header))
。 - keyboardP