MenuItem does have a MenuID property, if it does not satisfy your need, you can always derive a new class from MenuItem and add an ID property to it

解决方案 »

  1.   

    呵呵,想来也只有saucer的方法,重写一个menuitem的派生类了。
      

  2.   

    好像是思路不对啊,放可以放进去,用的时候如果用,如果关连时间,其他的属性不要了吗,结构如何啊???我觉的dev-club winform 版主cnet的解决方案才是真正实用的,大家请看
    http://www.csdn.net/expert/topic/1048/1048189.xml?temp=.7916986如果有兴趣,可以看看,有问题回来讨论。没有兴趣,就当是菜鸟来瞎说。
      

  3.   

    bugfree(八个飞飞之独立寒秋) 
    虽然你这文章跟我这问题没什么联系,但是也可以学点东西,别说什么菜鸟,哪个高手不是从菜鸟开始,难道有吗?如果有,就没有高手了
      

  4.   

    老兄:我本来连菜鸟都不是,想必你使用过资源文件吧(VC++6,VB6里不是都有吗),那你就应该多研究一下C#中的.resX文件好了,那里有ID,而且还有利于程序的本土化呢,小虫,回家去多看看书吧!!!
      

  5.   

    麻烦xiongying860421() 兄弟说清楚,我的菜单是根据配置文件生成的,它跟RESX文件如何联系上呢?其中的ID又怎样可以得到了呢?
      

  6.   

    .rexs文件是一个XML格式的资源文件,里面并没有关于菜单的各种属性.看来你是非要个ID不行了,如下,
    产生一个文件class1.cs,拷贝下面的两个类到其中:
    using System;namespace WindowsTmp //这儿要合你的namespace匹配
    {
    public class MyMenuItem : System.Windows.Forms.MenuItem
    {
    private string _id;
    public string ID
    {
    set { _id = value;}
    get { return _id;}
    }
    } public class MyMainMenu : System.Windows.Forms.MainMenu
    {
    private string _id;
    public string ID
    {
    set { _id = value;}
    get { return _id;}
    } }
    }修改你原来Form的菜单,凡是从System.Windows.Forms.MainMenu 继承来的要它从MyMainMenu 继承,凡是从System.Windows.Forms.MenuItem继承来的要改成由MyMenuItem 继承,操作起来就是在原来的代码里换.编译一下,你就可以在属性窗口中看到这个ID 属性了.但是这样还是动态不了.我还是认为CNET的方法才能真正动态起来,可以动态的分配标题,各种属性,和点击事件.他的那些菜单都是运行是从一个XML文件中读出,运行时候生成的,包括事件.说不定你有更好的方案,但为什么一直不肯说啊.