c#菜单动态合并的实现方法

说明

在程序中经常使用弹出菜单,并且一个窗体中可以存在多个弹出菜单。开发过MDI窗体的读者可能都知道,当MDI子窗体最大化时,子窗体和主窗体的菜单能够自动的合并。这是如何实现的呢?本例实现了将两个弹出菜单动态的合并成一个弹出菜单的功能。实例效果如图1.2所示。

要点

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

public void AddRange (
  ToolStripItem[] toolStripItems
)

参数说明如下。

toolStripItems:控件的数组。

过程

(1)创建一个项目,将其命名为Ex01_02,默认窗体为Form1。

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

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

 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.contextMenuStrip2.Items.Count; )//合并菜单
      {
        item.DropDownItems.Add(f.contextMenuStrip2.Items[i]);
      }
      this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
      item});
    }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • c#中合并excel表格的方法示例

    有多个结构一样的Excel,带复杂表头需要合并为一个,且去掉多余的表头数据,可以用COM组件来读取每个Excel表格的Range来合并到一个新的表格中.样例如图 有很多相同格式的表格,合并代码如下: using System; using System.Collections.Generic; using System.Text; using System.Reflection; using Excel = Microsoft.Office.Interop.Excel; namespace Co

  • C#实现合并及拆分PDF文件的方法

    有时我们可能会遇到下图这样一种情况 - 我们需要的资料或教程被分成了几部分存放在多个PDF文件中,不管是阅读还是保存都不是很方便,这时我们肯定想要把这些PDF文件合并为一个PDF文件.相对应的,有时候我们也需要拆分一个大的PDF文件,来从中获取我们需要的那一部分资料.这篇文章主要分享如何使用C#来将多个PDF文件合并为一个PDF文件以及将一个PDF文件拆分为多个PDF文件. 合并PDF文件 合并PDF文件的代码很简单,主要分为三步,首先获取需要合并的PDF文件,然后调用public static

  • c#中合并DataTable重复行的值

    复制代码 代码如下: //DataTable数据添加            Hashtable ht = new Hashtable();            DataTable dt = new DataTable();            DataColumn dc = new DataColumn("id");            dt.Columns.Add(dc);            dc = new DataColumn("name");   

  • C#中DataTable排序、检索、合并等操作实例

    一.排序1.获取DataTable的默认视图2.对视图设置排序表达式3.用排序后的视图导出的新DataTable替换就DataTable(Asc升序可省略,多列排序用","隔开)1).重生法 复制代码 代码如下: dstaset.Tables.Add(dt)dataset.Tables(0).DefaultView.Sort = "id desc" 2).直接法 复制代码 代码如下: dv = New DataView(dt)dv.Sort = "id d

  • C#实现简单合并word文档的方法

    本文实例讲述了C#实现简单合并word文档的方法.分享给大家供大家参考.具体如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Reflection; namespace Demo { p

  • C#文件合并的方法

    本文实例讲述了C#文件合并的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.IO; string filetomerge=@"C:\temp\data.bin"; string targetpath=@"D:\store"; string strFileName = filetomerge.Substring(filetomerge.LastIndexOf(Path.DirectorySeparatorChar)

  • C#实现合并多个word文档的方法

    本文实例讲述了C#实现合并多个word文档的方法,是非常具有实用价值的技巧.分享给大家供大家参考. 具体实现方法如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Microsoft.Office.Interop.Word; using System.Reflection; using System.IO; using System.Diagnostics;

  • C#自适应合并文件的方法

    本文实例讲述了C#自适应合并文件的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.IO; namespace MergeFile { class Program { public static void Main(string[] args) { int count=1; string sourcepath=@"D:\SplitFile"; string filetomerge=@"C:\编程的奥秘.pdf";

  • c#菜单动态合并的实现方法

    说明 在程序中经常使用弹出菜单,并且一个窗体中可以存在多个弹出菜单.开发过MDI窗体的读者可能都知道,当MDI子窗体最大化时,子窗体和主窗体的菜单能够自动的合并.这是如何实现的呢?本例实现了将两个弹出菜单动态的合并成一个弹出菜单的功能.实例效果如图1.2所示. 要点 C# 2.0中已经将弹出菜单封装为Context MenuStrip控件,利用该控件中的Items对象可以操作菜单中的菜单项.该对象是ToolStripMenuItem类型,使用Items.AddRange( )方法可以向弹出菜单中

  • jquery 动态合并单元格的实现方法

    如下所示: ////在table的第二行的位置添加一行: var tbl_elm = $("#dgList"); $('<tr><td colspan=\'2\'>xxxxxx</td></tr>').insertBefore($("TR", tbl_elm).eq(1)) ////table中指定行第N列合并单元格(合并后会多出一列,删除N+1单元格即可) var tds = $("#dgList .Tab

  • ThinkPHP实现动态包含文件的方法

    本文实例讲述了ThinkPHP实现动态包含文件的方法.分享给大家供大家参考.具体分析如下: 问题描述:在做项目的时候遇到问题,也是很常见的问题,一般主页包含头部和脚步,为了方便管理,这些都需要使用包含文件来实现,ThinkPHP提供了包含文件的方法,以上是最简单的包含的操作的方式,但是在运行的过程中我发现,在请求的时候只是请求的是模板文件,也就是所谓的静态包含,但是如果遇到菜单是动态生成的就很难办了. 在网上找到一个解决办法:使用Widget 1.我们在页面中实现一个分类显示的Widget,首先

  • jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解

    本文实例讲述了jQuery autoComplete插件两种使用方式及动态改变参数值的方法.分享给大家供大家参考,具体如下: 一.一次加载.多次使用: 前端JS代码: /*客户名称自动匹配*/ function customerAutoComplete(){ $.ajax({ type:"GET", url:encodeURI("/approvalajax/salesOrderApproval_findCustomerList"), dataType:"j

  • 使用layui实现的左侧菜单栏以及动态操作tab项方法

    首先说一下左侧菜单栏 这是一个最基本的左侧菜单栏,实现的过程很简单,官方的说明文档就有,但是我在导入layer.js之后,直接复制这段官方代码到我的编辑器上时,发现页面是这样的: 发现,绑定属性的菜单并没有下拉选项,这个问题在我导入layer.all.js之后解决了,而且发现如果是在页面的最上方导入的话也没有下拉选项,只有在html代码下面导入,才可以显示 ,不知道是什么原因. 下面说重点,动态操作tab项 页面截图: tab项右键菜单: 这里右键菜单的样式并没有做太多的美化. html代码:(

  • layui-tree实现Ajax异步请求后动态添加节点的方法

    最近在弄一个产品分类管理,是一个树形菜单的形式,用的是layui-tree ,由于它并没有动态添加节点,所以只能自己刚了. 大概效果如图 体的实现是当我鼠标移入"长袖"这个分类时,出现三个icon (如图),按"增加"按钮,会发送ajax异步请求到后台,在数据库库中增加以"长袖"为父类id 的一个子分类,成功后返回到前台,然后相应的节点下动态添加子节点,主要是通过append 来增加html元素 <!DOCTYPE html> <

  • Android 虚拟按键适配动态调整布局的方法

    最近项目中遇到了华为虚拟按键适配的问题,主页是个RecylerView(如下图),如果不做适配,在界面初始化完毕后,虚拟按键会遮挡页面或者空出一些留白部分,针对这个问题上网找了些资料,总结了以下方法 首页下部分是RecylerView 首页下半部分是个RecylerView(针对适配) 监听虚拟键的切换 注册系统广播 getContentResolver().registerContentObserver(Settings.System.getUriFor("navigationbar_is_m

  • antd Select下拉菜单动态添加option里的内容操作

    antd Select下拉菜单动态添加option里的内容,通过form表单绑定select选中的值 提供一个公共的方法,每次只需去调用这个方法就行了 //这里是示例数据格式 let giftScope =[ { code:200, id:1, name:"张三" }, { code:300, id:2, name:"李四" }, { code:400, id:3, name:"王五" }, { code:500, id:4, name:&quo

  • element 动态合并表格的步骤

    前言 element 官方的例子太简单了,不满足实际的需求 数据肯定是动态的,合并的行数,列数都是动态的,该如何知道每一行的合并数呢 需求 动态合并表格,数据来源于数据库 正文 一开始,我的数据源是单独的数组,表格数据合并了几个数据, 我根据各个数组的长度,来决定每一行的合并数 结果:有些数据是正常的,但有些又合并出错了.计算的方式不对 尝试二 dataPretreatment() 用这个方法 计算出每一行的行数 dataPretreatment(){ //表格数据列合并预处理,生成一个与行数相

  • vue+el-element中根据文件名动态创建dialog的方法实践

    目录 背景 实现 1.封装的/utils/dialogControl.js 2.dialog文件定义  3.使用 背景 在项目中使用对话框的通常做法是把对话框封装成组件,在使用的地方引入,然后添加到template,使用visible.sync控制对话框的显示/隐藏,监听confirm事件处理用户点击确定.如下: <confirm-dialog v-if="confirmDialogVisible" :title="$t(`mineData.tips.deleteDat

随机推荐