瞬間教會(huì)你建立VS2003窗口的全部?jī)?nèi)容
本文講述VS2003窗口的建立和創(chuàng)建。這些內(nèi)容都是我今天花花了一周的時(shí)間查閱資料并像IT精英學(xué)習(xí)出來(lái)的,中間可能有不少錯(cuò)誤是我沒(méi)有挑出的,歡迎大家指正。網(wǎng)上論壇上也有相關(guān)內(nèi)容。
VS2003窗口這個(gè)問(wèn)題的根本原因是由于IE控件在處理隱藏消息時(shí)會(huì)將自己由系統(tǒng)中刪除掉。解決的辦法是:#t#
在改變控件父窗口的MdiParent屬性之前將IE控件由該窗口的Controls集合中去掉,在改變之后再將IE控件添加到集合中 VS2003中MdiParent屬性變化時(shí)會(huì)導(dǎo)致IE控件被摧毀掉,而不會(huì)重新生成。VS2005雖然也會(huì)被摧毀,不過(guò)控件會(huì)正確被重新創(chuàng)建
- private void button2_Click(object sender, System.EventArgs e)
- {
- if(m_frmOwner == null)
- m_frmOwner = this.MdiParent;
- Controls.Remove(this.axWebBrowser1);
- Visible = false;
- if(this.MdiParent == null)
- this.MdiParent = m_frmOwner;
- else
- {
- Point pos;
- pos = PointToScreen(Location);
- this.MdiParent = null;
- this.Location = pos;
- }
- Visible = true;
- Controls.Add(this.axWebBrowser1);
- }
重載VS2003窗口的OnVisibleChanged()方法 無(wú)論是VS2003還是VS2005,當(dāng)改變IE控件的顯示屬性時(shí),控件會(huì)被系統(tǒng)除去,而不會(huì)重新生成。對(duì)于VS2003來(lái)說(shuō),如果是改變MdiParent屬性的話(huà),也必須重載這個(gè)方法,否則在控件重新加入到窗口的集合中時(shí),窗口在進(jìn)行控件消息遍歷時(shí),會(huì)有問(wèn)題。
- protected override void OnVisibleChanged(EventArgs e)
- {
- foreach(Control obj in Controls)
- obj.Visible = this.Visible;
- }