【问题标题】:display int value from enum [duplicate]显示来自枚举的 int 值 [重复]
【发布时间】:2016-09-04 19:39:48
【问题描述】:

我有一个 propertygrid,我需要在 propertygrid 内创建一个组合框并显示 int 值(1 到 9),我发现使用 enum 是最简单的方法,但 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
        }
    }

【问题讨论】:

  • 你试过int steps = (int)TotalSteps.First
  • 是的@Kramb 它会工作
  • @Kramb 感谢您的回答,是的,我已经尝试过了,但是如何在“get”函数中返回它?该值无法转换

标签: c# wpf enums propertygrid


【解决方案1】:

要获取枚举的所有值,试试这个

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

你的 totalSteps 属性应该是这样的

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

【讨论】:

  • 它仍然无法正常工作,它显示“无法将类型”System.Collections.Generic.IEnumerable 隐式转换为 StepMode.TotalSteps”
  • allValues 变量将是一个 IEnumerable,因为它包含所有枚举值的整数列表,因此您需要将 totalSteps DataType 从 TotalSteps 更改为 IEnumerable
  • 请检查编辑我也改变了吸气剂。
  • 我已经编辑了我的代码,它没有显示错误,但是在属性网格中,该值在文本框中显示“WpfApplication18.Configuration+StepMode+TotalSteps[]”,而不是 int 值( 1 到 9) 在组合框中。
  • 我们可以看看您的代码,了解您如何将这些值设置到您的组合框
【解决方案2】:

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

属性(我猜)被定义为获取/设置选定的枚举值,因此当类型为 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(); } 
 }

【讨论】:

  • 感谢您的回答,这也不起作用,它在文本框中显示为零,而不是在组合框中显示一组 int 值。
  • 哦.. 好的,我明白你在说什么。给我一分钟,我会更新它。
【解决方案3】:

您应该创建一个返回 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; }
    }

在设置此属性时,您必须通过这样做将 totalSteps 转换为 int。

   `TotalStepsInInt = (int)totalSteps;`

【讨论】:

猜你喜欢
  • 2016-01-18
  • 2014-02-02
  • 2018-04-14
  • 1970-01-01
  • 1970-01-01
  • 2012-08-31
  • 2013-06-28
  • 2016-03-05
  • 1970-01-01
相关资源
最近更新 更多