這篇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時寫入)

創作者介紹

StreamWhite

teexit1224 發表在 痞客邦 PIXNET 留言(0) 人氣()