private void Form1_Load(object sender, EventArgs e)
{
f2 = new Form2();
f2.Show();
}
我在Form1上有該代碼。這樣會自動運行Form2_Load
。當我點擊Form1上的按鈕時有可能嗎? Form2_Load
將再次運行而不必關閉Form2。刷新/重新從表格1到表格2
private void Form1_Load(object sender, EventArgs e)
{
f2 = new Form2();
f2.Show();
}
我在Form1上有該代碼。這樣會自動運行Form2_Load
。當我點擊Form1上的按鈕時有可能嗎? Form2_Load
將再次運行而不必關閉Form2。刷新/重新從表格1到表格2
在回答您的評論:
在Form1上放置一個按鈕,點擊它會消息更新發送到窗體2。 Form2中的文本框將顯示該消息。
(。首先,這不是Observer模式,但沒關係,這並不需要的人。)
首先,Form1
需要其參考保留的Form2
實例:
public class Form1
{
private Form2 Form2Instance { get; set; }
private void Form1_Load(object sender, EventArgs e)
{
Form2Instance = new Form2();
Form2Instance.Show();
}
// the rest of your code
}
現在Form1
上的其他代碼可以引用該實例。這是因爲你實際上不想重新加載所有的Form2
任何時候都會有變化。你只是想「發送消息更新到form2」。
現在,怎麼會Form2
收到那條消息?它可以暴露一種方法。事情是這樣的:
public class Form2
{
public void Update(string newValue)
{
someTextBox.Text = newValue;
}
// the rest of the code
}
現在上Form1
代碼可以調用該方法上的Form2
的情況下,它的引用。所以,當你點擊一個Form1
按鈕,你可以這樣做:
Form2Instance.Update("some value");
這將「發送消息」來的Form2
實例。
非常感謝你,先生!現在我明白了。 – user3293347
你究竟在做什麼? 'Form2_Load'只會在'Form2' *載入*時運行。所以你需要打開一個'Form2'的新實例,你可以用你顯示的確切代碼來做。 – David
如果代碼值得運行,請將其放入一個名字很好的函數中,並在需要時調用它。用任何數量的邏輯編碼事件都是不好的。 – TaW
@David謝謝你。抱歉。我仍然是C#新手。我試圖使用觀察者模式。從Form1到Form2。表格2是觀察者。當單擊Form1上的按鈕時,它將向form2發送消息更新。 Form2中的文本框將顯示該消息。 – user3293347