http://hi.baidu.com/ivanbobo/blog/item/63571d1744ea941bc83d6ddd.html
在子視窗中聲明父視窗對象即可進行調用例如,父視窗為MDIParent1 ,子視窗為MDI 只需在MDI 中,需要調用父視窗的地方聲明該對象即可,方法如下:
public partial class MDI : Form
{
public delegate void PostText(string text);
public event PostText PT;
public MDI()
{
InitializeComponent();
}
private void MDI_Activated(object sender, EventArgs e)
{
MDIParent1 mdiForm = (MDIParent1)this.MdiParent;
mdiForm.statusStrip.Items[0].Text = this.Text;//當父表單變數為公有時,直接設定更為簡單
}
}
(注)此時父表單statusStrip修改為public,這種情況下直接設定更為簡單 另:一般情況下父表單中控制項為私人的private,這種情況下使用委託在MDI中定義委託
public partial class MDI : Form
{
public delegate void PostText(string text);
public event PostText PT;
public MDI()
{
InitializeComponent();
}
private void MDI_Activated(object sender, EventArgs e)
{
MDIParent1 mdiForm = (MDIParent1)this.MdiParent;
mdiForm.GetText(this.Text);//往往父表單控制項都為私人的,委託的
}
}
在MDIParent1中代碼:
public partial class MDIParent1 : Form
{
private int childFormNumber = 0;
public MDIParent1()
{
InitializeComponent();
}
private void ShowNewForm(object sender, EventArgs e)
{
// 建立此子表單的一個新執行個體。
MDIApplication.MDI childForm = new MDIApplication.MDI();
// 在顯示該表單前使其成為此 MDI 表單的子表單。
childForm.MdiParent = this;
childForm.WindowState = FormWindowState.Maximized;
childForm.Text = "視窗" + childFormNumber++;
childForm.Show();
childForm.PT += new MDI.PostText(GetText);
}
public void GetText(string text)
{
this.statusStrip.Items[0].Text = text;
}
}
}