如何在C#中使MDI主窗体客户区中放置的控件不覆盖子窗体(100分)

W

woodmud

Unregistered / Unconfirmed
GUEST, unregistred user!
  小弟在用C#编写程序时,需要利用一下MDI主窗体的客户区部分,在里面输出一些信息,因此放置了一些控件,但是在打开子窗体时出现了问题,这些控件覆盖了子窗体。其实在Delphi中也有此问题,估计这是Windows的MDI本身的行为,请问各位高手,怎么解决这个问题。最好用简单的方法,能设置几个属性搞定是最棒的。
 
Form x=new Form2();
x.Show();//开启Form2
 
主窗体的客户区你也放置控件吗??? 没见过这样的用法。
to 昱
利用你的那种方法打开子窗口,每点一都会生成一个新子窗口实例。
在delphi 时 用动态创建窗口不存在这种问题(如果用静态也会出现上述问题),在delphi 时(如果用静态)我是用这种方法解决的:
//判断子窗口form2 是否已被打开
for i:=0 to mdichildcount-1do
begin
if mdichildren is Tform2 then
//是已打开,让其显示出来
begin
mdichildren.show;
form2.Top:=60;
form2.left:=30;
form2.Width:=736;
form2.Height:=459;
form2.PageControl1.ActivePageIndex:=0;
exit;
end;
//end if
end;
//end for
form2:=tform2.Create(application);
//还没有打开,则创建它
但C#中如何实现呢???
 
哎!看来还得靠自己
已经搞定啦! 和大家一起分享
private void menuItem2_Click(object sender, System.EventArgs e)
{
int aaa=0;
aaa=this.MdiChildren.Length;//获取子窗口数组的长度
for(int i=0;i<aaa;i++)
{
if (this.MdiChildren is FormUnit)//说明已打开该子窗体
{
this.MdiChildren.Show();
return;
}
}
FormUnit childform1=new FormUnit();
childform1.MdiParent=this;
childform1.Show();

}
 

Similar threads

D
回复
0
查看
740
DelphiTeacher的专栏
D
D
回复
0
查看
742
DelphiTeacher的专栏
D
顶部