C# MDI子窗体最大化后与主窗体不融合解决方法

如果出现下面图示情况:

最大化后:

移动可以遮住菜单栏:

大家要知道,C#已经对子窗体最大化后,子窗体的标题栏会和父窗体的菜单栏融合。子窗体最小化后有个小窗体会紧挨状态栏停靠:



造成这种情况的原因:

private void Form1_Load(object sender, EventArgs e)  中加入了如下语句:

   child.TopLevel = false;                                                           
   child.Parent = this;        //是这两句话造成的这种现象                                                                                 
                                                                                                                                                                       
   child.StartPosition = FormStartPosition.Manual;                                                                                     
   child.Show();                                                                                                                                                                                                                                                      
   child.Focus();  

解决方法,将上面的代码改为:

            child.WindowState = FormWindowState.Normal;
            child.MdiParent = this;//这句代码也要写上,否则会出错。
            child.Show();
            child.Focus();
如果更改了后出现:

会报“无法将顶级控件赋给控件”异常,解决这个问题我用

child.TopLevel = false; 
这句代码,从而造成开篇出现的这种现象。


解决这些问题后,正确效果是:


如果出现下面情况:

解决方法:添加主窗体的menuStrip1控件的 ItemAdded事件处理函数,代码如下:

 private void menuStrip1_ItemAdded(object sender, ToolStripItemEventArgs e)  
 {
        if (e.Item.Text.Length == 0 )
        {
              e.Item.Visible = false;
         }
  }


  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值