2016-05-10 2 views
1

У меня есть свойствоgrid, в котором мне нужно создать combobox внутри свойства grid и отобразить значение int (от 1 до 9), я нашел, что использование перечисления является самым простым способом, но перечисление не может отображать значение int, даже я пытаюсь включить его в int, но я не знаю, как вернуть все значение. Любой другой способ сделать это? Заранее спасибо. Ниже мой код.display int value from enum

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

Вы пробовали 'int steps = (int) TotalSteps.First'? – Kramb

+0

да @ Kramb будет работать – Mostafiz

+0

@ Kramb благодарит вас за ответ, и да, я пробовал, но как я могу вернуть его в функцию «получить»? значение не может быть преобразовано. – junxiong

ответ

2

Чтобы получить все значения Enum попробовать этот

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

и ваша собственность totalSteps должна выглядеть эта функция

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

Он все еще не работает, он показывает: «Невозможно неявно преобразовать тип» System.Collections.Generic.IEnumerable в StepMode.TotalSteps » – junxiong

+0

Переменная' allValues' будет IEnumerable , потому что она содержит целочисленный список из всех значений Enum, поэтому вам нужно изменить свой TotalSteps DataType от TotalSteps до IEnumerable. Ramin

+0

проверить изменение, пожалуйста, я также изменил getter. – Ramin

0

как я могу вернуть его в "получить" ? значение не может быть преобразовано.

Свойство (я думаю) определено для получения/установки выбранного значения перечисления, поэтому вы не можете вернуть int при типе TotalSteps.

Я предлагаю еще один свойство только для чтения внутри Step, который преобразует выбранное значение enum к int

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

Поскольку вы упомянули (как комментарий) вы хотите все ИНТ значения связываются с ComboBox сделать это.

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

Спасибо за ответ, это тоже не работает, оно показывает нуль в текстовом поле, а не набор значений int в combobox. – junxiong

+0

Ох .. хорошо, я понял, что вы говорите. Дайте мне минуту, я обновлю это. –

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

и время установив это свойство, вам нужно преобразовать totalStep в int, выполнив это.

`TotalStepsInInt = (int)totalSteps;` 
+0

, и если вы хотите массив или список всех значений (конечно, в целочисленном), вы можете зациклировать эту логику для всех значений в перечислении. [Ссылка] http://stackoverflow.com/questions/972307/can-you-loop-through-all-enum-values – Amit