2013-02-23 8 views
5

Mam bardzo proste pytanie do pytania o C# i WPF. Moje pytanie nastąpi po tej próbie kopalni:dodając wartości wyliczeniowe do prostego combobox

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 
    } 

Ok, więc moje pytanie brzmi jak dodam wartości (np Ludzki, krasnolud, elf .....) W polu kombi: cbRace? Przepraszam, jestem nowy w C#, więc z radością doceniam, jeśli ktoś może mi pomóc :), z góry dziękuję.

+0

czy powyższy kod nie działa dla Ciebie? – mihirj

Odpowiedz

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 ​​zwróci listę typu enum. –

+0

Dziękuję bardzo, John! to działało dla mnie, dzięki :) – user2061405

14

Powinieneś być w stanie zrobić coś takiego:

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

Zamówienie this odpowiedź uzyskać więcej informacji na temat ustawiania i pobierania wartości enum.

+0

Uwaga: W WPF jest to właściwość 'ItemsSource'. – LPL

+0

To jest najlepsza odpowiedź !! –

0

użycie tego

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

do databind swoje wyliczenia do combobox, a następnie użyć SelectedValue i SelectedText właściwości Twojego combobox do retreive nazwy i wartości;

5

To może być najprostszym sposobem, aby ustawić elementy ComboBox:

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

Nie jest konieczne do pętli nad wartościami enum, wystarczy ustawić właściwość ItemsSource.

2

To nie jest preferowanym rozwiązaniem jako Clemens już wam to, ale jeśli chcesz dodać w XAML bezpośrednio można również zrobić

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

można również implment się IValueConverter że po związaniu z Typ, zwraca Enum.GetValues ​​

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

Proszę, dodaj proszę nieco więcej kontekstu wokół swojej odpowiedzi. Tylko kody lub tylko linki są trudne do zrozumienia. Pomoże to pytającemu i przyszłym czytelnikom, jeśli dodasz więcej informacji do swojego postu. – RBT

1

najkrótsza droga, aby dodać do wartości wyliczenia combobox w C#

class User{ 

public enum TYPE { EMPLOYEE, DOCTOR, ADMIN }; 

} 

// Dodaj tę klasę do formularza załaduj wydarzenie Form Cunstructor

cmbUserType.Items.AddRange(Enum.GetNames(typeof(User.TYPE))); 
Powiązane problemy