有同志遍历过这个枚举吗?我一次想把这个枚举里所有的数值取出来用,但出来后发现有重复的,不知道什么原因!

解决方案 »

  1.   

    嗯 MessageBoxIcon 这个枚举里面确实有重复的值哦~!
    但是获取名称却不重复呀~!
    string [] names = Enum.GetNames(typeof(MessageBoxIcon));[align=center]*************************************************
    本内容使用CSDN小秘书回复
    每天回帖即可得10分可用分!
    *************************************************[/align]
      

  2.   

    using System;
    using System.Windows.Forms;class A
    {
    static void Main()
    {
        Type t = typeof(MessageBoxIcon);
        foreach (string s in Enum.GetNames(t))
        {
         Console.WriteLine("值: 0x{0:X2}  名称: {1}", (int)Enum.Parse(t, s), s);
        }
    }
    }
    /*
    输出:
    值: 0x00  名称: None
    值: 0x10  名称: Hand
    值: 0x10  名称: Error
    值: 0x10  名称: Stop
    值: 0x20  名称: Question
    值: 0x30  名称: Exclamation
    值: 0x30  名称: Warning
    值: 0x40  名称: Asterisk
    值: 0x40  名称: Information其中名称不同但值相同的枚举代表同样的意思,
    比如说 Asterisk 和 Information 都是一个 i 字的图案。 
     None        消息框未包含符号。   Hand        该消息框包含一个符号,该符号是由一个红色背景的圆圈及其中的白色 X 组成的。  
     Error       该消息框包含一个符号,该符号是由一个红色背景的圆圈及其中的白色 X 组成的。  
     Stop        该消息框包含一个符号,该符号是由一个红色背景的圆圈及其中的白色 X 组成的。   Question    该消息框包含一个符号,该符号是由一个圆圈和其中的一个问号组成的。   Exclamation 该消息框包含一个符号,该符号是由一个黄色背景的三角形及其中的一个感叹号组成的。  
     Warning     该消息框包含一个符号,该符号是由一个黄色背景的三角形及其中的一个感叹号组成的。   Asterisk    该消息框包含一个符号,该符号是由一个圆圈及其中的小写字母 i 组成的。  
     Information 该消息框包含一个符号,该符号是由一个圆圈及其中的小写字母 i 组成的。  
    */
      

  3.   

    using System;// 其实我们也可以自己定义一个含有相同值的枚举:
    enum MyEnum
    {
      None        = 0x00, // 消息框未包含符号。    Hand        = 0x10, // 该消息框包含一个符号,该符号是由一个红色背景的圆圈及其中的白色 X 组成的。  
      Error       = 0x10, // 该消息框包含一个符号,该符号是由一个红色背景的圆圈及其中的白色 X 组成的。  
      Stop        = 0x10, // 该消息框包含一个符号,该符号是由一个红色背景的圆圈及其中的白色 X 组成的。    Question    = 0x20, // 该消息框包含一个符号,该符号是由一个圆圈和其中的一个问号组成的。    Exclamation = 0x30, // 该消息框包含一个符号,该符号是由一个黄色背景的三角形及其中的一个感叹号组成的。  
      Warning     = 0x40, // 该消息框包含一个符号,该符号是由一个黄色背景的三角形及其中的一个感叹号组成的。    Asterisk    = 0x40, // 该消息框包含一个符号,该符号是由一个圆圈及其中的小写字母 i 组成的。  
      Information = 0x40, // 该消息框包含一个符号,该符号是由一个圆圈及其中的小写字母 i 组成的。  
    }class Program
    {
      static void Main()
      {
        Type t = typeof(MyEnum);
        foreach (string s in Enum.GetNames(t))
        {
          Console.WriteLine("值: 0x{0:X2}  名称: {1}", (int)Enum.Parse(t, s), s);
        }
      }
    }
    /*
    输出:
    值: 0x00  名称: None
    值: 0x10  名称: Hand
    值: 0x10  名称: Error
    值: 0x10  名称: Stop
    值: 0x20  名称: Question
    值: 0x30  名称: Exclamation
    值: 0x40  名称: Warning
    值: 0x40  名称: Asterisk
    值: 0x40  名称: Information
    */
      

  4.   

    wuyi8808 好强大啊!能加你为好友吗?呵呵!
      

  5.   

    枚举遍历
    using  System;  
     
    public  class  EnumTest  {  
           enum  Days  {  Saturday,  Sunday,  Monday,  Tuesday,  Wednesday,  Thursday,  Friday  };  
     
           public  static  void  Main()  {  
                   Type  weekdays  =  typeof(Days);  
                   foreach  (  string  s  in  Enum.GetNames(weekdays)  )  
                           Console.WriteLine(  "{0,-11}=  {1}",  s,  Enum.Format(  weekdays,  Enum.Parse(weekdays,  s),  "d"));  
           }  
    }  
    Days换MessageBoxIcon
      

  6.   

    哇!如梦哥!劳您大驾,太感动了...谢谢您!!!想问一下,为什么遍历出来的值第一个是None呢?可以去掉吗?
      

  7.   

    None也是一个枚举值,一般来说None的值都是0
      

  8.   

    哦,我靠,忘了!none是没有图标,谢谢啊!