C#工具栏合并问题

当使用MDI技术时,为了美观或者什么原因可能需要合并工具栏。方法如下(http://blog.csdn.net/zyc21st/archive/2007/04/21/1573921.aspx):

在MDI窗体定义

        public interface ICipherInputForm
        {
            ToolStrip CipherToolStrip
            {
                get;
            }
        }

在MdiChildActivate事件中加入

         private void MainFrame_MdiChildActivate(object sender, EventArgs e)
        {

//CTools为MDI窗体工具栏
            ToolStripManager.RevertMerge(CTools);
            if (this.ActiveMdiChild != null)
            {
                if ((ActiveMdiChild as ICipherInputForm).CipherToolStrip != null)
                {
                    ToolStripManager.Merge((ActiveMdiChild as ICipherInputForm).CipherToolStrip,CTools);
                }
            }
            //若子窗体无工具栏时,隐藏该工具栏
            if (CTools.Items.Count > 0)
                CTools.Visible = true;
            else
                CTools.Visible = false;
         }

在子窗体

    public partial class FrmPowerTeam : Form,MainFrame.ICipherInputForm
    {

//Tools为你子窗体的工具栏.注意将其Visible = false;
        public ToolStrip CipherToolStrip
        {
            get
            {
                return Tools;
            }
        }
   }

 

这里要注意一个问题,如果子窗体不止一种,每一种子窗体都要实现这个接口,否则在运行时就会报错,一般都提示

    未处理的“System.OutOfMemoryException”类型的异常出现在 System.Windows.Forms.dll 中。
    其他信息: 创建窗口句柄时出错。

这样的信息。只要使用的子窗体实现了ICipherInputForm这个接口,通常情况下应该不会出什么太大的问题。

 

以上仅代表个人见解,如果有什么问题欢迎随时讨论~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值