這篇BLOG是coding note
如果有人也想要解決類似的問題,可以參考
提供C++/CLI版本和C#版本
情況: 將子視窗的數值回傳給父視窗。
1. 增加一個視窗為子視窗
2. 增加一個button作為觸發窗口,即當按下按鈕以後關閉子視窗,並將數值回傳給父視窗。
所以一個事件為button的click事件,另一個則為子視窗的FormClosing事件。
內容為:
private void button1_Click(object sender, EventArgs e)
{
Close();
}
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
Form1 test = (Form1)this.Owner;
test.setValue(this.textBox1.Text);
}
當Form2的button被關閉以後,會執行Close()的函數,此時會將Form2的Owner(即Form1)拿出來,並回傳數值。
3. 回到父視窗,則需要在show的函數中,將this的物件送入
form2 = new Form2();
form2.ShowDialog(this);
C++/CLI:
兩個版本大同小異,主要要注意新增Form2以後,需要把函數的實作放在Cpp中,如果不這樣做會要在form2.h中引入form1.h,這樣可能會發生header file cycle的問題
所以只要把實做放在Cpp中這樣就沒問題了。(#include form1.h 是在cpp時寫入)
留言列表