2013-02-23 60 views
5

我有一個非常簡單的問題來問關於C#和WPF。 我的問題將這種嘗試我的後如下:添加枚舉值到一個簡單的組合框

private void Window_Loaded(object sender, RoutedEventArgs e) 
     { 
      foreach (var item in Races) 
      { 
       cbRace.Items.Add(item); 
      } 
     } 
    } 

    enum Races 
    { 
     Human=1, 
     Dwarf, 
     Elf, 
     Orc, 
     Goblin, 
     Vampire, 
     Centaur 
    } 

好了,所以,我的問題是如何增加值(例如人類,矮人,精靈......。)在組合框中:cbRace?對不起,我是C#的新手,所以如果有人能幫助我,我會讚賞它:),提前致謝。

+0

是不是上面的代碼適合你? – mihirj 2013-02-23 13:14:26

回答

16
private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     foreach (var item in Enum.GetValues(typeof(Races))) 
     { 
      cbRace.Items.Add(item); 
     } 
    } 
    enum Races 
    { 
     Human = 1, 
     Dwarf, 
     Elf, 
     Orc, 
     Goblin, 
     Vampire, 
     Centaur 
    } 
+0

Enum.GetValues將返回您的類型枚舉列表。 – 2013-02-23 13:16:12

+0

謝謝sooo約翰!它爲我工作,謝謝:) – user2061405 2013-02-23 13:17:36

14

你應該能夠做這樣的事情:

cbRace.DataSource = Enum.GetValues(typeof(Races)); 

結帳this答案在設置和檢索枚舉值的更多信息。

+0

注意:在WPF中它是'ItemsSource'屬性。 – LPL 2013-02-23 13:54:16

+0

這是最好的答案! – 2017-05-10 06:27:28

0

使用本

cbRace.Datasource = Enum.GetValues(typeof(Races)); 

您枚舉數據綁定到組合框,然後用你的組合框的了selectedValue和selectedText屬性中檢索名稱和值;

5

這或許應該設置組合框項目最簡單的方法:

private void Window_Loaded(object sender, RoutedEventArgs e) 
{ 
    cbRace.ItemsSource = Enum.GetValues(typeof(Races)); 
    cbRace.SelectedIndex = 0; 
} 

這是沒有必要遍歷枚舉值,只需設置ItemsSource屬性。

2

這並不像克萊門斯已經給你一個最佳的解決方案,但如果你想在XAML直接添加也可以做

<ComboBox> 
    <urCode:Races>Human</urCode:Races> 
    <urCode:Races>Dwarf</urCode:Races> 
    <urCode:Races>Elf</urCode:Races> 
</ComboBox> 

,你也可以implment一個的IValueConverter,當綁定到類型,返回Enum.GetValues

0
cmbUserType.Items.AddRange(core.Global.ToObjectArray(Enum.GetValues(typeof(STATUS)))); 
public enum STATUS { INACTIVE, ACTIVE } 
+0

我請求你請在你的答案中添加更多的上下文。僅有代碼或僅鏈接的答案很難理解。如果您可以在帖子中添加更多信息,它可以幫助提問者和未來的讀者。 – RBT 2016-12-31 04:10:38

1

最短的方式來增加枚舉值到組合框在C#

class User{ 

public enum TYPE { EMPLOYEE, DOCTOR, ADMIN }; 

} 

//將該類加入你的Form Cunstructor表格加載事件中

cmbUserType.Items.AddRange(Enum.GetNames(typeof(User.TYPE)));