2009-06-10 8 views

答えて

14

WinFormsを使用しようとしている場合は、カスタムイベントを「子」フォームで実装できます。 「子供」フォームのボタンをクリックすると、そのイベントが発生する可能性があります。

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

public class ChildForm : Form 
{ 
    public delegate SomeEventHandler(object sender, EventArgs e); 
    public event SomeEventHandler SomeEvent; 

    // Your code here 
} 

public class ParentForm : Form 
{ 
    ChildForm child = new ChildForm(); 
    child.SomeEvent += new EventHandler(this.HandleSomeEvent); 

    public void HandleSomeEvent(object sender, EventArgs e) 
    { 
     this.someTextBox.Text = "Whatever Text You Want..."; 
    } 
} 
1

概ね; 1つのフォームは、テキストを保持するいくつかの基本的なオブジェクトへの参照を持たなければなりません。このオブジェクトは、テキストの更新時にイベントを発生させる必要があります。別のフォームのTextBoxには、そのイベントに登録しているデリゲートが存在する必要があります。これにより、基礎となるテキストが変更されたことがわかります。 TextBoxデリゲートに通知されると、TextBoxは新しいオブジェクトのテキストをクエリし、TextBoxを新しいテキストで更新する必要があります。

0

WinFormsと仮定します。テキストボックスは、オブジェクトのプロパティにバインドされている場合

は、あなたがオブジェクトにINotifyPropertyChangedインターフェイスを実装し、変更された文字列の値について通知します。以上により

public class MyClass : INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 

    private string title; 
    public string Title { 
     get { return title; } 
     set { 
     if(value != title) 
     { 
      this.title = value; 
      if (this.PropertyChanged != null) 
      { 
      this.PropertyChanged(this, new PropertyChangedEventArgs("Title")); 
      } 
     } 
    } 

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

関連する問題