从枚举中显示int值

时间:2016-05-10 02:04:43

标签: c# wpf enums propertygrid

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

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
        }
    }

3 个答案:

答案 0 :(得分:3)

要获取Enum的所有值,请尝试使用

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

并且您的totalSteps属性应该如下所示

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

答案 1 :(得分:0)

  

如何在“get”功能中返回它?该值无法转换

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

我建议在Step中添加另一个 readonly 属性,将选定的enum值转换为int

 public int Step
 {
     get {return (int)totalsteps; }
 }

由于您提到(作为注释)您希望所有int值绑定到ComboBox,请执行此操作。

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

答案 2 :(得分:0)

你应该创建一个返回int而不是TotalSteps的属性

你正在这样做

    private TotalSteps totalSteps;

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

我建议这样做

    private TotalSteps totalSteps;
    private int totalStepsInInt;

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

并且在设置此属性时,您必须通过执行此操作来转换int中的totalSteps。

   `TotalStepsInInt = (int)totalSteps;`