• 动态将MenuStrip控件中的信息添加到TreeView控件中


    本文详细介绍怎样将MenuStrip控件中的信息添加到TreeView控件中

    首先在WinForm窗体中添加一个MenuStrip控件和TreeView控件,根据个人的爱好把控件布局好后。在窗体的加载事件中(根据自己的情况而定)添加如下的代码:

       /// <summary>
       /// 窗体加载时事件
       /// </summary>
       /// <param name="sender"></param>
       /// <param name="e"></param>
      private void FrmServerManager_Load(object sender, EventArgs e)
         {
       treeView1.Nodes.Clear();//清空导航菜单
            //调用GetMenu方法,将menuStrip1控件的子菜单添加到treeView1控件中
             GetMenu(treeView1, menuStrip1);
            this.treeView1.ExpandAll();

      }

    然后自定义GetMenu(treeView1, menuStrip1)方法。代码如下:

    #region 将MenuStrip控件中的信息添加到TreeView控件中
    /// <summary>
    /// 将MenuStrip控件中的信息添加到TreeView控件中
    /// </summary>
    /// <param name="treeV">TreeView控件</param>
    /// <param name="MenuS">MenuStrip控件</param>
    public void GetMenu(TreeView treeV, MenuStrip MenuS)
    {
    for (int i = 0; i < MenuS.Items.Count; i++) //遍历MenuStrip组件中的一级菜单项
    {
    //将一级菜单项的名称添加到TreeView组件的根节点中,并设置当前节点的子节点newNode1
    TreeNode newNode1 = treeV.Nodes.Add(MenuS.Items[i].Text);
    //将当前菜单项的所有相关信息存入到ToolStripDropDownItem对象中
    ToolStripDropDownItem newmenu = (ToolStripDropDownItem)MenuS.Items[i];
    //判断当前菜单项中是否有二级菜单项
    if (newmenu.HasDropDownItems && newmenu.DropDownItems.Count > 0)
    for (int j = 0; j < newmenu.DropDownItems.Count; j++) //遍历二级菜单项
    {
    //将二级菜单名称添加到TreeView组件的子节点newNode1中,并设置当前节点的子节点newNode2
    TreeNode newNode2 = newNode1.Nodes.Add(newmenu.DropDownItems[j].Text);
    //将当前菜单项的所有相关信息存入到ToolStripDropDownItem对象中
    ToolStripDropDownItem newmenu2 = (ToolStripDropDownItem)newmenu.DropDownItems[j];
    //判断二级菜单项中是否有三级菜单项
    if (newmenu2.HasDropDownItems && newmenu2.DropDownItems.Count > 0)
    for (int p = 0; p < newmenu2.DropDownItems.Count; p++) //遍历三级菜单项
    //将三级菜单名称添加到TreeView组件的子节点newNode2中
    newNode2.Nodes.Add(newmenu2.DropDownItems[p].Text);
    }
    }
    }
    #endregion

    最后来看一下效果图,如下:

    当然了你还可以根据自己的需要处理一下treeView相关的事件来显示相应的应用窗体。

  • 相关阅读:
    机器学习实战1:朴素贝叶斯模型:文本分类+垃圾邮件分类
    Hadoop实战1:MapR在ubuntu集群中的安装
    建站、开发工具,持续更新。。。
    Mysql多表联合更新、删除
    List的深度copy和浅度拷贝
    HashMap和List遍历方法总结及如何遍历删除元素
    for循环的两种写法哪个快
    MySQL的隐式类型转换整理总结
    Java BigDecimal类的使用和注意事项
    MySQL DECIMAL数据类型
  • 原文地址:https://www.cnblogs.com/wangsaiming/p/2065626.html
Copyright © 2020-2023  润新知