スレッド テクノロジを使用してメイン ウィンドウ フォームによって作成された chlid ウィンドウ フォームには、子テキスト ボックス コントロールがあり、この機能を実装したいと考えています。テキストをメイン ウィンドウ フォームに追加します。それについて私は何ができますか?
1605 次
2 に答える
0
簡単にグーグルで検索すると、大量の結果が返されます...
おそらく、Form2 (子) を作成するときに、Form1 (親) のインスタンスを渡すことができる public メソッドを用意し、次に Form1 で同じことを行いますが、インスタンスではなく文字列を渡すことをお勧めします。形。したがって、次のような結果になります。
Form1 (親):
private void Button1_Click_ShowChildForm(args..)
{
Form2 frm2 = new Form2();
frm2.Show();
frm2.GetInstance(this);
}
public void PassBack(string var)
{
TextBox1.Text = var;
}
Form2 (子):
private static Form1 _frm1;
public void GetInstance(Form1 Frm1)
{
this._frm1 = Frm1;
}
private void Button2_Click_Close(args...)
{
_frm1.PassBack(this.TextBox2.Text);
this.Close();
}
そのような何か^^^^トリックを行う必要があります。;)
注意。少し整理することもできますが、本当にやりたい場合は、Form2 の Show メソッドをオーバーライドして、別のメソッドを宣言する代わりに Form1 のインスタンスを受け入れることができますが、アイデアは得られます。
于 2012-05-26T14:02:00.620 に答える
0
ChildWindowがメッセージをMainWindowに送り返す方法が必要です。次の例が役立つはずです。
コード:
ウィンドウ間の「通信」を可能にするインターフェースpublic interface IListner
{
void Send(String message);
}
メインウィンドウ
public partial class MainWindow : Window, IListner
{
public MainWindow()
{
InitializeComponent();
}
public void Send(string message)
{
// Read the message here.
// If this code is called from different thread, use "Dispatcher.Invoke()"
}
public void OpenAnotherWindow()
{
// Since "MainWindow" implements "IListner", it can pass it's own instance to "ChildWindow"
ChildWindow childWindow = new ChildWindow(this);
}
}
子ウィンドウ:
public partial class ChildWindow : Window
{
private IListner Listner { get; set; }
public ChildWindow(IListner listner)
{
InitializeComponent();
Listner = listner;
}
private void OnTextBoxTextChanged()
{
// This will call "Send" on "MainWindow"
Listner.Send(TextBox1.Text);
}
}
于 2012-05-26T15:40:50.693 に答える