本文讲述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);
- }
重载VS2003窗口的OnVisibleChanged()方法 无论是VS2003还是VS2005,当改变IE控件的显示属性时,控件会被系统除去,而不会重新生成。对于VS2003来说,如果是改变MdiParent属性的话,也必须重载这个方法,否则在控件重新加入到窗口的集合中时,窗口在进行控件消息遍历时,会有问题。
- protected override void OnVisibleChanged(EventArgs e)
- {
- foreach(Control obj in Controls)
- obj.Visible = this.Visible;
- }