本文讲述VS2003窗口的建立和创建。这些内容都是我今天花花了一周的时间查阅资料并像IT精英学习出来的,中间可能有不少错误是我没有挑出的,欢迎大家指正。网上论坛上也有相关内容。
VS2003窗口这个问题的根本原因是由于IE控件在处理隐藏消息时会将自己由系统中删除掉。解决的办法是:#t#
在改变控件父窗口的MdiParent属性之前将IE控件由该窗口的Controls集合中去掉,在改变之后再将IE控件添加到集合中 VS2003中MdiParent属性变化时会导致IE控件被摧毁掉,而不会重新生成。VS2005虽然也会被摧毁,不过控件会正确被重新创建
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);
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
重载VS2003窗口的OnVisibleChanged()方法 无论是VS2003还是VS2005,当改变IE控件的显示属性时,控件会被系统除去,而不会重新生成。对于VS2003来说,如果是改变MdiParent属性的话,也必须重载这个方法,否则在控件重新加入到窗口的集合中时,窗口在进行控件消息遍历时,会有问题。
protected override void OnVisibleChanged(EventArgs e)
{
foreach(Control obj in Controls)
obj.Visible = this.Visible;
}
- 1.
- 2.
- 3.
- 4.
- 5.