主窗体已设为MDI容器,然后有一个地图子窗体在程序打开后就最大化显示,现在需要打开其他子窗体时出现问题了, private void tsm21_Click(object sender, EventArgs e)
{
if (frmInfo == null || frmInfo.IsDisposed)
{
frmInfo = new FrmInfo();
}
frmInfo.Show();
frmInfo.MdiParent = this;
frmInfo.TopMost = true;
}
这种方式界面上没有显示frminfo,可能是被地图窗体遮住了去掉
frmInfo.MdiParent = this;
frmInfo.TopMost = true;
可以显示frminfo,但子窗体可以移出主窗体,且系统状态栏里也会显示2个窗体用showdialog方式的话,程序运行时接收到一些消息的时候会不会无法弹出消息框?那我到底该怎么设置子窗体呢?
{
if (frmInfo == null || frmInfo.IsDisposed)
{
frmInfo = new FrmInfo();
}
frmInfo.Show();
frmInfo.MdiParent = this;
frmInfo.TopMost = true;
}
这种方式界面上没有显示frminfo,可能是被地图窗体遮住了去掉
frmInfo.MdiParent = this;
frmInfo.TopMost = true;
可以显示frminfo,但子窗体可以移出主窗体,且系统状态栏里也会显示2个窗体用showdialog方式的话,程序运行时接收到一些消息的时候会不会无法弹出消息框?那我到底该怎么设置子窗体呢?
不用这句。
不用这句,frminfo界面闪了一下就消失了,可能还是被地图子窗体遮住了
if (frmInfo == null || frmInfo.IsDisposed)
{
frmInfo = new FrmInfo();
} frmInfo.MdiParent = this;
this.SuspendLayout();
frmInfo.Show();
frmInfo.WindowState = FormWindowState.Maximized;
this.ResumeLayout();
this.PerformLayout();
frmInfo.ResumeLayout();
{
frmInfo = new FrmInfo();
} frmInfo.MdiParent = this;
this.SuspendLayout();
frmInfo.Show();
frmInfo.WindowState = FormWindowState.Maximized;
this.ResumeLayout();
this.PerformLayout();
frmInfo.ResumeLayout();这样frminfo肯定是打开了,在主窗体的menuStrip1行多了最大化最小化和关闭按钮,但还是被地图窗体挡住了。
地图子窗体的parent设为该panel ////地图
plMap.Dock = DockStyle.Fill; frmMap.TopLevel = false;
frmMap.Parent = this.plMap;
frmMap.Dock = DockStyle.Fill;
frmMap.Show();
这样是为了程序一打开地图子窗体就可以最大化显示在主界面内,不这么写的话地图子窗体会覆盖主窗体菜单现在改了一下, //显示地图子窗体
frmMap = new FrmMap(this);
frmMap.TopLevel = false;
frmMap.Dock = DockStyle.Fill;
frmMap.Show(); //系统管理
private void tsm21_Click(object sender, EventArgs e)
{
if (frmInfo == null || frmInfo.IsDisposed)
{
frmInfo = new FrmInfo();
}
frmInfo.Show();
}现在第二个窗体可以显示出来了,但系统状态栏里还是有2个标题,而且子窗体可以移出主窗体
//系统管理
private void tsm21_Click(object sender, EventArgs e)
{
if (frmInfo == null || frmInfo.IsDisposed)
{
frmInfo = new FrmInfo(this);
} frmInfo.Show();
frmInfo.WindowState = FormWindowState.Normal ;
} public FrmInfo(FrmMain parent)
{
this.MdiParent = parent;
this.WindowState = FormWindowState.Normal;
//初始化控件
InitializeComponent();
}
会有一个很明显的从最大化变成normal的过程
{
//显示窗体
frmMap = new FrmMap(this);
}
现在各子窗体的位置都正确了,但出现了一个新的问题,所有子窗体在显示时都默认最大化显示(已将属性设为normal),按以下方式写能看到一个非常明显的从最大化变成normal的过程frmInfo.Show();
frmInfo.WindowState = FormWindowState.Normal ;这样写就直接是最大化了
frmInfo.WindowState = FormWindowState.Normal ;
frmInfo.Show();还有什么属性要设置?