2013-02-23 12 views
5

Ho una domanda molto semplice da fare su C# e WPF. La mia domanda seguirà dopo questo tentativo di mine:aggiunta di valori enum a una semplice casella combinata

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, quindi, la mia domanda è come posso aggiungere i valori (per esempio umano, nano, elfo .....) Nella casella combinata: cbRace? Scusate, sono nuovo di C# quindi vorrei rally apprezzare se qualcuno mi può aiutare :), grazie in anticipo.

+0

non è il codice sopra lavorando per voi? – mihirj

risposta

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 ​​restituirà l'elenco dei tipi di enumerazione. –

+0

Grazie mille, John! ha funzionato per me, grazie :) – user2061405

14

Si dovrebbe essere in grado di fare qualcosa di simile:

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

Checkout this risposta per ulteriori informazioni sull'impostazione e recuperare i valori enum.

+0

Nota: in WPF è la proprietà 'ItemsSource'. – LPL

+0

Questa è la migliore risposta !! –

0

uso questo

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

per DataBind tuo enum alla casella combinata e quindi utilizzare SelectedValue e SelectedText proprietà della vostra casella combinata retreive nomi e valori;

5

Questo sarebbe forse il modo più semplice per impostare gli elementi ComboBox:

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

Non è necessario per eseguire un ciclo sui valori enum, basta impostare la proprietà ItemsSource.

2

Questa non è una soluzione preferita da Clemens ha già dato che, ma se si vuole aggiungere nella XAML direttamente si potrebbe anche fare

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

si potrebbe anche implment un IValueConverter che quando associato a un tipo, restituisce i Enum.GetValues ​​

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

Vi chiedo di aggiungere qualche altro contesto attorno alla vostra risposta. Le risposte solo per codice o solo per collegamento sono difficili da comprendere. Aiuterà il richiedente e i futuri lettori sia se puoi aggiungere ulteriori informazioni nel tuo post. – RBT

1

via più breve per aggiungere valori enum a Combobox in C#

class User{ 

public enum TYPE { EMPLOYEE, DOCTOR, ADMIN }; 

} 

// Aggiungere questa classe per il vostro evento carico sotto forma di modulo Cunstructor

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