Winフォームでは、これらの3つのテストメソッドがあります。最初にボタンを作成し、2つ目のタブでタブコントロールを作成し、3番目に作成したボタンを最初のタブに移動します。NullReferenceException動的に作成されたコントロール、オブジェクトが存在するようです。
private void button1_Click(object sender, EventArgs e)
{
Button przycisk = new Button();
przycisk.Location = new Point(24, 250);
przycisk.Name = "nowy";
przycisk.Text = "utworzony";
przycisk.Width = 131;
przycisk.Height = 23;
Controls.Add(przycisk);
}
private void button2_Click(object sender, EventArgs e)
{
TabControl zakladki = new TabControl();
zakladki.Location = new Point(208, 160);
zakladki.Name = "zakl";
zakladki.Height = 150;
zakladki.Width = 208;
zakladki.TabPages.Add("zakladka1", "pierwsza");
zakladki.TabPages.Add("zakladka2", "druga");
Controls.Add(zakladki);
}
private void button3_Click(object sender, EventArgs e)
{
TabControl zakladki = (TabControl)Controls.Find("zakl", false).FirstOrDefault();
int numerZakladki = 1;
foreach (TabPage zakladka in zakladki.TabPages)
{
Control kt = Controls["nowy"];
kt.Location = new Point(10, 10); // System.NullReferenceException
zakladka.Controls.Add(kt);
numerZakladki++;
}
}
参照ボタンの位置を変更しようとすると、動作を理解するのが難しいです。上記のコードはSystem.NullReferenceExceptionをスローしますが、実行すると
if (kt != null)
{
kt.Location = new Point(10, 10);
}
が動作します。誰も私にそれを説明することはできますか?
「button1」(つまり、「przycisk」コントロールを作成しました)をクリックしましたか? –
はい私は正しい順序でボタンをクリックしました:) – jankes