20070526 SaferRun 开发 ToolStripMenuItem
 http://www.yippeesoft.com
 
 C#代码辅助工具Visual Assist X 与 VS2005的代码自动提示发生冲突的解决办法
在 Visual Assist X 设置好代码快捷方式以后,比如 if 的快捷方式设置成:
 if($select$)
&leftsign;
         $end$
&rightsign;

在VS代码编辑窗口中编辑时,发现与VS自己的 if 快捷方式发生了冲突,Assist 的if出不来。
于是设置VS的属性N次,找到了解决问题的办法,如下:
工具 >> 选项 >> 文本编辑器 >> C#

1、常规: 将“语句结束”自动列出成员,隐藏高级成员选中
2、Intellisense:将“完成列表”中的“键入字符后显示完成列表”去掉,不选中。其他的项目不去动他。

 C# winform程序中动态菜单的问题

给应用程序动态增加菜单

例:

popMenuItem 是父菜单,可以是菜单条上的主菜单项目也可以是下拉菜单中的菜单项

DynMenuItem_Click(object sender, EventArgs e) 是菜单响应函数

&leftsign;

      ToolStripMenuItem item = (ToolStripMenuItem)sender;

      item 是当前单击的新菜单项

&rightsign;

ToolStripMenuItem item = new ToolStripMenuItem("动态菜单Text" ,null,new System.EventHandler(this.DynMenuItem_Click),"menuItemName");

popMenuItem.DropDownItems.Add(item);

 c# 分隔符 new ToolStripMenuItem
 private void Form1_Load(object sender, EventArgs e)
        &leftsign;
            XmlDocument doc = new XmlDocument();
            //如果网络不畅的话则有可能会抛出WebException的。
            doc.Load(tvListPath);
            XmlElement ele = doc.DocumentElement;
            XmlNodeList nodeList = ele.SelectNodes("item"); //得到一个名字为IIFF的所有节点
            ConfigMainMenu(nodeList, this.menuStrip1, null);
        &rightsign;
        //包含菜单项内容的xml文件的地址。
        private const string tvListPath = @"http://uploadlist.googlepages.com/OnlineTV.xml";
        private void commonToolStripMenuItem_Click(object sender, EventArgs e)
        &leftsign;
            ToolStripMenuItem menuItem = sender as ToolStripMenuItem;
            Debug.Assert(menuItem != null);
            //未set的Name取出来的将是"",所以如此进行判断
            if (menuItem.Name != "")
            &leftsign;
                Process.Start(menuItem.Name);
            &rightsign;
        &rightsign;
        /**//// <summary>
        /// 递归函数,向主窗体中加入菜单项。
        /// </summary>
        /// <param name="nodeList"></param>
        /// <param name="menuStrip"></param>
        /// <param name="menuItem"></param>
        public void ConfigMainMenu(XmlNodeList nodeList, MenuStrip menuStrip, ToolStripMenuItem menuItem)
        &leftsign;
            foreach (XmlNode node in nodeList)
            &leftsign;
                if (node.Name == "item")
                &leftsign;
                    XmlAttributeCollection attribute = node.Attributes;
                    XmlAttribute text = attribute["text"];
                    if (text != null)
                    &leftsign;
                        XmlAttribute address = attribute["address"];
                        //根据xml文件的内容新建一个菜单项。
                        ToolStripMenuItem subItem = new ToolStripMenuItem(text.Value);
                        if (address != null)
                        &leftsign;
                            subItem.Name = address.Value;
                        &rightsign;
                        subItem.Click += new EventHandler(commonToolStripMenuItem_Click);
                        addItem(menuStrip, menuItem, subItem);
                        ConfigMainMenu(node.ChildNodes, null, subItem);
                    &rightsign;
                &rightsign;//如果指示为分隔符的话:
                else if (node.Name == "separator")
                &leftsign;
                    ToolStripSeparator toolStripSeparator = new ToolStripSeparator();
                    addItem(menuStrip, menuItem, toolStripSeparator);
                &rightsign;
                else
                &leftsign;
                    throw new InvalidDataException("节点的名称有误,请检查");
                &rightsign;
            &rightsign;
        &rightsign;

原创文章,转载请注明: 转载自YippeeSoft开心软件

本文链接地址: 20070526 SaferRun 开发 ToolStripMenuItem

历史博文

标签:, , , ,