C#中Mdi多窗体工具栏全并控讨

C# 中, Mdi 框架的子窗体菜单可以自动显示到主窗体的菜单栏里,但是子窗体的工具栏在显示的时候是不会自动合并到主窗体的工具栏中的。但我们可以建两个工具栏,然后让子窗体与父窗体各拥有一个 ToolBar ,当子窗体最大化时,父窗体的 ToolBar 不再显示,只显示子窗体的 ToolBar ,并实现父窗体的功能。
 
下面以开发记事本的多文档软件为例进行说明:
建一主窗体: frmMain ,工具栏: Toolbar1
建一子窗体: frmEdit 工具栏: Toolbar1
 
首先在主窗体中建两个方法,分别是显示与隐藏 Toolbar ,其访问权限为 Public
 
public void ShowToolBar()
        {
            ToolBar1.Visible = true;
        }
public void HideToolBar()
        {
            ToolBar1.Visible = false ;
        }
 
然后在子窗体中捕捉最大化事件:
private void frmEdit_Resize(object sender, EventArgs e)
        {
            if (WindowState == FormWindowState.Maximized)
            {
                tlbFileNew.Visible = true;
                tlbFileOpen.Visible = true;
                tlbFileSave.Visible = true;
((frmMain)this.MdiParent).HideToolBar();
            }
        }
 
// 注意:C#中没有直接的最大化事件,我们只有捕捉Resize事件,然后判断是不是最大化。
 
tlbFileNew.Visible = true;
tlbFileOpen.Visible = true;
tlbFileSave.Visible = true;
这三句是为了显示本来应该在主窗体中显的的按钮。由于先前主窗体中工具栏还没有隐藏,因此,这些不能显示出来,故 Visible 设为FALSE,现在最大化后,主窗体的工具栏隐藏起来了,故这里应该显示出来,并执行被隐藏了的主窗体工具栏的功能。
要实现主窗体的工具栏的功能,可以用以下语句
tlbFileNew.Click +=new EventHandler(((frmMain)this.MdiParent).ToolNew_Click );
                tlbFileOpen.Click += new EventHandler(((frmMain)this.MdiParent).ToolOpen_Click);
                tlbFileSave.Click += new EventHandler(((frmMain)this.MdiParent).ToolSave_Click);
 
这个很简单了,就不多说了,到了这里,似乎这一功能已经完成了,但不可粗心,还有一点,当子窗体完全关闭时,主窗体的TOOLBAR要显示出来。
 
private void frmEdit_FormClosing(object sender, FormClosingEventArgs e)
        {
           if (((frmMain)this.MdiParent).MdiChildren.Length == 1)
            {
                ((frmMain)this.MdiParent).ShowToolBar();
            }
            }
 
到这里,这个功能才真正实现!

转载于:https://www.cnblogs.com/homeofish/archive/2007/08/11/851437.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值