2011-06-17 84 views
3

我有兩種形式。一個是帶有按鈕和文本框的父窗體。點擊按鈕後,對話框打開子表單,子表單又有一個文本框和一個按鈕。現在我想要的是當子窗體文本框中的文本自動更改父窗體文本框中的文本更改時。要獲得這個我所做的是,從父窗體在C中爲子窗體中的控件添加事件處理程序#

Form3 f3 = new Form3(); 
f3.delBetInpTxt.TextChanged +=new EventHandler(delBetInpTxt_TextChanged); 
public void delBetInpTxt_TextChanged(object sender, EventArgs e) 
    { 
     TextBox t = (TextBox)sender; 
     simDelTxt.Text = t.Text + " ms"; 
    } 

我在父窗體中添加了上述代碼,並且子窗體是Form3。但沒有任何反應,即使在子表單中的changng文本之後,父表單文本框仍然不會更改。我在這裏做錯了嗎?

+0

您是否調試了應用程序以查看發件人是否爲空並且Text屬性也是? – 2011-06-17 07:55:53

回答

13

您可以添加子窗體中的事件並在文本更改時增加它。然後在父窗體中創建事件處理程序並在父窗體中更改文本。 在子窗體:

public event EventHandler OnChildTextChanged; 
private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    if(OnChildTextChanged != null) 
     OnChildTextChanged(textBox1.Text, null); 
} 

在父窗體:

private void button1_Click(object sender, EventArgs e) 
{ 
    ChildForm child = new ChildForm(); 
    child.OnChildTextChanged += new EventHandler(child_OnChildTextChanged); 
    child.ShowDialog(); 
} 

void child_OnChildTextChanged(object sender, EventArgs e) 
{ 
    textBox1.Text = (string)sender; 
} 

希望它能幫助。

+0

通過交換實現我可以單擊我的父窗體上的菜單按鈕並啓用我的用戶控件上的按鈕。所以謝謝你的答案 – 2015-08-24 20:54:41

相關問題