2017-02-09 13 views
0

親フォームのラベルを変更しようとすると、NullReferenceExceptionが返されます。親のフォームはNullReferenceExceptionを与えます

をForm1

public string LabelText 
    { 
     get 
     { 
      return label1.Text; 
     } 
     set 
     { 
      label1.Text = value; 
     } 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     Form2 f2 = new Form2(); 
     f2.ShowDialog(); 
    } 

Form2が

private void button1_Click(object sender, EventArgs e) 
    { 
     ((Form1)ParentForm).LabelText = textBox1.Text; 
     this.Close(); 
    } 
+0

? –

+0

Form2に親フォームがあることを通知していません。これを行う: 'Form2 f2 =新しいForm2(これ);' – Equalsk

答えて

0

代わりParentFormOwnerフォームを確認する必要があります。

private void Form1_Load(object sender, EventArgs e) 
{ 
    Form2 f2 = new Form2(); 
    f2.ShowDialog(this); 
} 

のForm2:

private void button1_Click(object sender, EventArgs e) 
{ 
    ((Form1)Owner).LabelText = textBox1.Text; 
    this.Close(); 
} 

をしかし、それはまだフォーム間でデータを渡すための最良の方法ではないですし、第二のフォームを開くときは、所有者を渡す必要があります。 Form2フォーム上のパブリックプロパティを作成し、DialogResultは、子フォームを閉じた後OKを返さForm1場合にその値を読ん:

はたぶんParentFormがnullの
private void Form1_Load(object sender, EventArgs e) 
{ 
    using(Form2 f2 = new Form2()) 
    { 
     if (f2.ShowDialog() != DialogResult.OK) 
      return; 

     LabelText = f2.SomeValue; 
    } 
} 

Whats the difference between Parentform and Owner

関連する問題