6


4

あるフォームのボタンをクリックして別のフォームのTextBoxのテキストを更新する方法を教えてください。

3 Answer


15


あなたがWinFormsを使おうとしているなら、あなたはあなたの "子"フォームにカスタムイベントを実装することができます。 あなたはあなたの "子"フォームのボタンがクリックされたときにそのイベントを発生させることができます。

あなたの "親"フォームはイベントをリッスンし、それ自身のTextBoxアップデートを処理します。

パブリッククラスChildForm:Form {パブリックデリゲートSomeEventHandler(オブジェクトセンダ、EventArgs e);公開イベントSomeEventHandler SomeEvent。

//ここにあなたのコード}

パブリッククラスParentForm:Form {ChildForm child = new ChildForm();} child.SomeEvent = new EventHandler(this.HandleSomeEvent);

public void HandleSomeEvent(オブジェクトセンダ、EventArgs e){this.someTextBox.Text = "好きなテキストを…..." }}


1


大体1つのフォームは、テキストを保持している基礎となるオブジェクトへの参照を持っていなければなりません。このオブジェクトはテキストの更新時にイベントを発生させるべきです。別の形式のTextBoxには、そのイベントを購読するデリゲートが必要です。これにより、基になるテキストが変更されたことがわかります。 TextBoxデリゲートが通知されると、TextBoxは基になるオブジェクトに新しいテキスト値を問い合わせ、新しいテキストでTextBoxを更新します。


0


WinFormを想定しています。

テキストボックスがオブジェクトのプロパティにバインドされている場合は、オブジェクトにINotifyPropertyChangedインターフェイスを実装し、変更されている文字列の値について通知します。

パブリッククラスMyClass:INotifyPropertyChanged {パブリックイベントPropertyChangedEventHandler PropertyChanged;

プライベート文字列のタイトル。パブリック文字列Title {get {return title; } set {if(value!= title){this.title = value;} if(this.PropertyChanged!= null){this.PropertyChanged(this、new PropertyChangedEventArgs( "Title")); }}}

上記で、あなたがTitleプロパティにバインドするならば - 更新はオブジェクトにバインドするすべてのフォーム/テキストボックスに '自動的に’行われます。 オブジェクトプロパティへの更新のバインディングを通知する一般的な方法であるため、上記の特定のイベントの送信をお勧めします。