C# winform窗体程序-菜单动态合并(MDI窗体)

winform实现菜单动态合并

下一篇:C# winform在状态栏中显示检查框【案例+源码】
在程序中经常使用弹出菜单,并且一个窗体中可以存在多个弹出菜单。开发
过 MDI 窗体的读者可能都知道,当 MDI 子窗体最大化时,子窗体和主窗体的菜单
能够自动的合并。这是如何实现的呢?本例实现了将两个弹出菜单动态的合并成
一个弹出菜单的功能。实例效果如下图所示。
在这里插入图片描述

C# 2.0 中已经将弹出菜单封装为 Context MenuStrip 控件,利用该控件中 的 Items
对象可以操作菜单中的菜单项。该对象是 ToolStripMenuItem 类型,使 用 Items.AddRange(
)方法可以向弹出菜单中添加菜单项,该方法原型如下。

public void AddRange (
ToolStripItem[] toolStripItems
)

参数说明如下。
l toolStripItems:控件的数组。
实现过程
(1)创建一个项目,将其命名为 Ex01_02,默认窗体为 Form1。

(2)从工具箱中向 Form1 窗体添加一个 MenuStrip 控件用来设计菜单;同
时向窗体添加 ContextMenuStrip 控件用来设计右键菜单;选中 MenuStrip 控件
创建一个“打开子窗体”主菜单,然后选中 ContextMenuStrip 控件为其添加子
项。

(3)为程序添加一个窗体,默认名为 Form2,同时向窗体添加 ContextMenu
Strip 控件用来设计右键菜单,然后选中 ContextMenuStrip 控件为其添加子项。

(4)主要程序代码。

  private void 打开子窗体ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form2 f = new Form2();
            f.MdiParent = this;
            f.Show();
            f.Resize += new EventHandler(f_Resize);
        }
        void f_Resize(object sender,EventArgs e)
        {
            Form2 f = (Form2)sender;
            ToolStripMenuItem item = new ToolStripMenuItem();
            for(int i = 0;i < f.contextMenuStrip1.Items.Count;)
            {
                item.DropDownItems.Add(f.contextMenuStrip1.Items[i]);
            }
            this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[]{
                item });
        }

把Form1设置为MDI窗体(多文档界面)
在这里插入图片描述

设置窗体是否是MDI窗体,MDI(Multiple Document Interface) 就是所谓的多文档界面,
所以在做多文档界>面程序时要用.MDI父窗体相应的所有子窗体都要设置MdiParent属性.
子窗体永远都将在MDI父窗体框架之内.比如
FormA: IsMdiContainer = true; //MDI父窗体
FormB: IsMdiContainer = false; //子窗体
MdiParent = FormA;

举一反三 根据本实例,读者可以实现以下功能。
让右键菜单在子窗体中显示。
让右键菜单在主窗体和子窗体中同时显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薪薪代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值