已有56人关注
把菜单内容加载到列表中,出错了,请老师帮看下,是什么原因呀?
发表在C#图书答疑 2010-07-18
是否精华
版块置顶:
//以下是form1代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            cls_treeViewMenu treeV = new cls_treeViewMenu();            
            treeV.GetMenu(treeView1,menuStrip1); 
        }
        
    }
}


//以下是类代码cls_treeViewMenu

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Windows.Forms;

namespace test
{
    class cls_treeViewMenu
    {
        public void GetMenu(TreeView treeV, MenuStrip MenuS)
        {
            //遍历MenuStrip菜单中的一级菜单项
            for (int i = 0; i < MenuS.Items.Count; i++)
            {
                //将一级菜单项的名称添加到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];   [font color=#FF0000]//错误提示:无法将类型为“System.Windows.Forms.ToolStripSeparator”的对象强制转换为类型“System.Windows.Forms.ToolStripDropDownItem”。[/font]
                        //判断二级菜单项中是否有三级菜单项
                        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);
                    }
            }
        }


    }
}

分享到:
精彩评论 1
小科_mrkj
学分:43 LV2
2010-07-19
沙发
读者朋友:
    您好,这个是由于你的菜单里面有分隔条造成的,你可以判断一下遍历到的项,如果是分隔条的话,不执行操作,否则的话,再转换为ToolStripDropDownItem,添加到列表中。
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照