これは非常に一般的なエラーですが、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()
:関数が呼び出される前に、クラス内のオブジェクトを参照しないでください。