|
分類:[C#]
いつもお世話になっております。
親ウインドウにテキストボックス1つとボタンが1つあります。
ボタン押下で子ウインドウを生成します。
子ウインドウにもテキストボックスとボタンが1つづつあります。
子ウインドウのテキストボックスに入力した文字を、子ウインドウにあるボタン押下で親ウインドウのテキストボックスに表示する作業をデリゲートを使って行いたいと考えております。
■親ウインドウ側 // 親ウインドウのデリゲート用関数は以下の通りです。 public bool CallBack_SetTextBox1( string strText1 ) { try { textBoxParent.Text = strText1; return true; } catch( Exception ex ) { return false; } }
// ボタン押下で子ウインドウ生成 FormChild fChild = new FormChild( ); fChild.ShowDialog( this );
■子ウインドウ側 // デリゲートの定義 public delegate bool CallBack_SetTextBox1( string strText1 ); // デリゲートの宣言 private CallBack_SetTextBox1 m_callbackSetText1;
// フォームのロードで以下の処理を記載 // デリゲートの実態を確保 FormParent fp = new FormParent(); m_callbackSetText1 = new CallBack_SetTextBox1( fp.CallBack_SetTextBox1 );
// ボタン押下で以下の処理を記載 m_callbackSetText1( textBox1.Text );
--- .NET2.0から別スレッドからのコントロールはInvokeを使うような記事をみつけましたが、
そのほとんどが、親ウインドウ内で生成したスレッドから使用するもので、
子ウインドウから操作するような記事を見つけることが出来ずに苦戦しております。
このソースで実行しますと、特にエラーは発生しませんが、
親ウインドウのテキストボックスに子ウインドウで入力したテキストが反映されないままです。 (親ウインドウ内でメッセージボックスで表示すると子ウインドウで入力した文字が表示されるが、テキストボックスには反映されない。)
どのようにすれば親ウインドウに反映出来るか御教授頂ければ幸いです。
以前、親ウインドウから子ウインドウを生成する際に、
FormChild fChild = new FormChild( new FormChild .SetTextBox1( CallBack_SendText1 ) ); fChild.ShowDialog( this );
のように、子ウインドウのコンストラクタにデリゲートの関数を引数もたせていまいたが、
今回は子ウインドウで生成したいと考えております。
このような方法はそもそも実装不可能なのでしょうか?
|