把窗体作为控件用,而窗体的标题栏不能激活?????

时间:2022-08-18 19:00:10
在一个父窗体(Fromparent)里有一个GroupBox(GropBox1)
点击你窗体(Formparent)的按钮,产生一个新窗体(是它的子窗体Formchild),我要这个子窗体(Formchild)显示在GroupBox1里面!也可以说把GroupBox1作为子窗体的容器?我做了很久,还是不那么理想!
我以前也这样做的,但这样show出来的窗体标题永远处于非活动状态,虽然可以用。
下面这个程序窗体标题永远处于非活动状态:
Form formchild = new Formchild;
可以不加(Formchild.Toplevel=false)这一句;
formchild.Parent=this;
this.GropBox1.Controls.Add(formchild);
formchild.Show;
下面这个程序窗体就可以有活动状态:
Form formchild = new Formchild;
formchild.Parent=this;
formchild.Show;//////////调转了一个位置
this.GropBox1.Controls.Add(formchild);
但是,用这程方法Show一个窗体出来可以,用同样的方示再Show第二个时就不行了
错误:创建窗口句柄出错!
请大家指点指点
谢谢大家!

13 个解决方案

#1


已经有一个formchild了,再加一个肯定不行。你在加个Formchild但不叫formchild试试。

#2


Up一下!

#3


UP

#4


iamafrog(我是青蛙) 这位兄弟你误会了我意思啦!我不是再加一个formchild,  我就是加另个一个窗体,如果formchild关闭的话,就可以,但如果formchild在的话就不可以啊!
Form formchild2 = new Formchild2;
formchild2.Parent=this;
formchild2.Show;
this.GropBox1.Controls.Add(formchild2);

#5


加条件看formchild是否存在

#6


formchild的显示我已经加了条件,只能显示一个,现在就是显示第二个窗体formchild2的时候
Form formchild2 = new Formchild2;
formchild2.Parent=this;
formchild2.Show;
this.GropBox1.Controls.Add(formchild2);
就是创建窗体句柄出错!
除非
Form formchild2 = new Formchild2;
formchild2.Parent=this;
this.GropBox1.Controls.Add(formchild2);
formchild2.Show;
就不出错,但formchild2的标题不是处于一个激活状态!因为formchild2已经变成了GropBox1的控件!!SOS!!!

#7


试了一下,我这可以无限显示(哦用的版本是VS 2003)

private void button1_Click(object sender, System.EventArgs e)
{
Form form2=new Form2();
form2.TopLevel =false;   //此句不可少!
form2.Parent = this;
this.groupBox1.Controls.Add(form2);
//form2.Visible =true;  //也可用此句替换form2.Show() 
form2.Show();
}

#8


哎,不是不能显示啊!是标题栏不能显示为正常的激活状栏啊!先谢你啦!

#9


我觉得就Windows的控件来说,标题栏不呈现激活是正常的啊。

因为他毕竟不是MDIChildren

在WinAPI中,用CreateWindow建立的带WS_CAPTION参数子控件也不是带激活颜色。

举例子,Studio.NET的工具栏在不停靠状态时,他也是不能有激活颜色的

我觉得不显示的源因是与Windows本身的消息机制有关系。

解决方案是,你可以想办法模拟标题栏的效果。有Enter和Level还有Click之类的事件来通知激活

#10


我也不能,up

#11


up

#12


关注,不知道MagicLibrary中是否有这方面的内容

#13


up

#1


已经有一个formchild了,再加一个肯定不行。你在加个Formchild但不叫formchild试试。

#2


Up一下!

#3


UP

#4


iamafrog(我是青蛙) 这位兄弟你误会了我意思啦!我不是再加一个formchild,  我就是加另个一个窗体,如果formchild关闭的话,就可以,但如果formchild在的话就不可以啊!
Form formchild2 = new Formchild2;
formchild2.Parent=this;
formchild2.Show;
this.GropBox1.Controls.Add(formchild2);

#5


加条件看formchild是否存在

#6


formchild的显示我已经加了条件,只能显示一个,现在就是显示第二个窗体formchild2的时候
Form formchild2 = new Formchild2;
formchild2.Parent=this;
formchild2.Show;
this.GropBox1.Controls.Add(formchild2);
就是创建窗体句柄出错!
除非
Form formchild2 = new Formchild2;
formchild2.Parent=this;
this.GropBox1.Controls.Add(formchild2);
formchild2.Show;
就不出错,但formchild2的标题不是处于一个激活状态!因为formchild2已经变成了GropBox1的控件!!SOS!!!

#7


试了一下,我这可以无限显示(哦用的版本是VS 2003)

private void button1_Click(object sender, System.EventArgs e)
{
Form form2=new Form2();
form2.TopLevel =false;   //此句不可少!
form2.Parent = this;
this.groupBox1.Controls.Add(form2);
//form2.Visible =true;  //也可用此句替换form2.Show() 
form2.Show();
}

#8


哎,不是不能显示啊!是标题栏不能显示为正常的激活状栏啊!先谢你啦!

#9


我觉得就Windows的控件来说,标题栏不呈现激活是正常的啊。

因为他毕竟不是MDIChildren

在WinAPI中,用CreateWindow建立的带WS_CAPTION参数子控件也不是带激活颜色。

举例子,Studio.NET的工具栏在不停靠状态时,他也是不能有激活颜色的

我觉得不显示的源因是与Windows本身的消息机制有关系。

解决方案是,你可以想办法模拟标题栏的效果。有Enter和Level还有Click之类的事件来通知激活

#10


我也不能,up

#11


up

#12


关注,不知道MagicLibrary中是否有这方面的内容

#13


up