关于C#:显示枚举的int值

display int value from enum

本问题已经有最佳答案,请猛点这里访问。

我有一个propertygrid,我需要在propertygrid中创建一个组合框并显示int值(1到9),我发现使用枚举是最简单的方法,但枚举无法显示int值,即使我试图将其强制转换为int,但我不知道如何返回所有值。还有别的办法吗?事先谢谢。下面是我的代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class StepMode
    {
        private TotalSteps totalSteps;

        public TotalSteps totalsteps
        {
            get { return totalSteps; }
            set { value = totalSteps; }
        }
        public enum TotalSteps
        {
            First = 1,
            Second = 2,
            Three = 3,
            Four = 4,
            Five = 5,
            Six = 6,
            Seven = 7,
            Eight = 8,
            Nine = 9
        }
    }


要获取枚举的所有值,请尝试此操作

1
var allValues = Enum.GetValues(typeof(TotalSteps)).Cast<int>().ToArray();

您的totalSteps属性应该如下所示

1
2
3
4
public int[] totalSteps
{
   get { return Enum.GetValues(typeof(TotalSteps)).Cast<int>().ToArray(); }
}


应生成返回int而不是totalSteps的属性

你在做这个

1
2
3
4
5
6
7
    private TotalSteps totalSteps;

    public TotalSteps totalsteps
    {
        get { return totalSteps; }
        set { value = totalSteps; }
    }

我建议你这么做

1
2
3
4
5
6
7
8
    private TotalSteps totalSteps;
    private int totalStepsInInt;

    public int TotalstepsInInt
    {
        get { return totalStepsInInt; }
        set { totalStepsInInt = value; }
    }

在设置这个属性时,你必须通过这样做来转换int中的totalsteps。

1
   `TotalStepsInInt = (int)totalSteps;`


how can I return it in"get" function? the value cannot be converted

属性(我猜)被定义为获取/设置选定的枚举值,因此当类型为totalsteps时,不能返回int。

我建议在Step中有另一个只读属性,它将所选enum值转换为int

1
2
3
4
 public int Step
 {
     get {return (int)totalsteps; }
 }

既然您提到(作为注释)您希望所有int值绑定到ComboBox,那么就这样做。

1
2
3
4
 public List<int< ComboValues
 {
     get { return Enum.GetValues(typeof(TotalSteps)).Cast<int>().ToList(); }
 }