2016-07-15 37 views
2

BillingForm(親フォーム)とSearchProduct(子フォーム)という2つのフォームがあります。子フォームから親フォームに値を渡す方法は?

BillingFormコード

private void textBoxProductNo_KeyDown(object sender, KeyEventArgs e) 
{ 
    if(e.KeyCode==Keys.F9) 
    { 
     using(SearchProduct sp=new SearchProduct) 
     { 
      sp.ShowDialog(this); 
     } 
    } 
} 

public void updatedText(string fromChildForm) 
{ 
    textBoxProduct.text=fromChildForm; 
} 

SearchProductフォームコード(子フォーム)

private void dataGridView1_KeyDown(object sender,KeyEventArgs e) 
{ 
    if(e.KeyCode==Keys.Enter) 
    { 
     BillingForm bf=(BillingForm)this.Owner; //Error appear here 
     bf.updatedText("Hello World"); 
     this.close(); 
    } 
} 

私はエラーメッセージを取得しています。

型「System.InvalidCastExceptionの」の未処理の例外はBillingSoftware.exe
で発生しました追加情報:型に型「BillingForm.MDIParent」のオブジェクトをキャストできません「BillingForm.BillingForm

+1

可能な二重にそれを使用する(http://stackoverflow.com/questions/280579/how -do-i-pass-a-value-from-a-child-back-to-the-parent-for m) – itsme86

+0

@ itsme86私はそのコーディングを見た。私は同じコーディングのみを使用しました。しかし、私は例外を取得しています。私のエラーメッセージを見てください – Faisal

+0

BillingFormはMDIフォームですか? – itsme86

答えて

0

渡すようにしてくださいコンストラクタに親と[私は戻って、親フォームに子から値を渡す方法は?]の変数

using(SearchProduct sp = new SearchProduct(this)) 
{ 
    sp.ShowDialog(this); 
} 

//In SearchProduct class 
public BillingForm MyParent {get; private set;} 

public SearchProduct(BillingForm parent) 
{ 
    this.MyParent = parent; 
} 

private void dataGridView1_KeyDown(object sender,KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter) 
    { 
     BillingForm bf = this.MyParent; 
     bf.updatedText("Hello World"); 
     this.close(); 
    } 
} 
関連する問題