質問: strAddress; //testクラスのstrTextメソッド呼び出し t.strText(); //子ウィンドウを閉じる this.Close(); } } すでに調べ・悩み始めて3時間経過しようとしてるので出来るだけ優しく教えていただけると幸いですm(_ _)m
回答: ご質問にある > > 親ウィンドウから子ウィンドウを出し、子ウィンドウで親ウィンドウのアクセサに値を代入し、使いまわししようと考えてますが、ShowDialogメソッドを用いて実行すると親ウィンドウに制御が戻る際に代入した値がNullになってしまいます。 > > > を踏まえてコードを見ると ``` //オブジェクト作成 test t = new test(); (略) private void Button_Click(object sender , RoutedEventArgs e) { //testクラスのsetTextにstrAddressを代入 t.setText = strAddress; //testクラスのstrTextメソッド呼び出し t.strText(); //子ウィンドウを閉じる this.Close(); } ``` と子ウィンドウクラス内で親ウィンドウクラスtestをnewで作っているのが不具合の原因です。 子ウィンドウを呼び出す段階で親ウィンドウはすでに存在しているので、newで新しく作ったものは親ウィンドウとそっくりですが別の存在です。 子ウィンドウで親ウィンドウのメソッドを操作したいのであれば ``` test t; public void setParent(test parent) { t = parent; } ``` のようなメソッドをnextwindowクラスに持たせて、子ウィンドウを呼び出す際に ``` nextwindow next = new nextwindow(); next.strAddress = "hoge"; // 親ウィンドウをセット next.setParent(this); next.ShowDialog(); ``` のように親ウィンドウ自身をセットしてやればいいです(今手近に確認できる環境がないので、何か見落としがあって動かなかったら済みません)。