一般子表單存取父表單的元件資料,通常會這樣寫。
Form1 (父),內含一個 TextBox1
Form2 (子),想存取 TextBox1
Form1 這樣寫:
Form2 frm = new Form2(this); //設定Owner frm.ShowDialog();
Form2 這樣寫:
TextBox txt = ((Form2)Owner).TextBox1; //取得Owner內元件
但如果今天放到MDI架構下會不太一樣,假設今天....
FormMain 設定為 MdiContainer,從裡面啟動 Form1
Form1 (父),內含一個 TextBox1
Form2 (子),想存取 TextBox1
這時如果同上述寫法,Form2 的 Owner (居然)會抓到 FormMain !?
Form2 必須改為這樣寫:
TextBox txt = ((Form2)Owner.ActiveMdiChild).TextBox1;