2013-02-23 20 views
5

tôi có một câu hỏi rất đơn giản để hỏi về C# và WPF. Câu hỏi của tôi sẽ theo sau lần này của tôi:thêm các giá trị enum vào một combobox đơn giản

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 như vậy, câu hỏi của tôi là làm thế nào tôi sẽ bổ sung thêm các giá trị (ví dụ con người, lùn, tinh .....) Vào combo box: cbRace? xin lỗi tôi mới đến C# vì vậy tôi sẽ rally đánh giá cao nếu ai đó có thể giúp tôi ra :), cảm ơn trước.

+0

không phải là mã ở trên có hiệu quả với bạn không? – mihirj

Trả lời

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 ​​sẽ trả về danh sách enum loại của bạn. –

+0

Cảm ơn bạn rất nhiều John! nó làm việc cho tôi, cảm ơn :) – user2061405

14

Bạn sẽ có thể làm điều gì đó như thế này:

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

Thanh toán this câu trả lời để biết thêm thông tin về thiết lập và lấy các giá trị enum.

+0

Lưu ý: Trong WPF nó là thuộc tính 'ItemsSource'. – LPL

+0

Đây là câu trả lời hay nhất !! –

0

sử dụng này

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

để DataBind enum của bạn để combobox và sau đó sử dụng các thuộc tính SelectedValue và selectedText của combobox của bạn để truy xuất tên và giá trị;

5

này có lẽ sẽ là cách dễ nhất để thiết lập các mục ComboBox:

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

Nó không phải là cần thiết để lặp qua các giá trị enum, chỉ cần đặt các ItemsSource tài sản.

2

Đây không phải là một giải pháp ưu tiên như Clemens đã đưa cho bạn đó, nhưng nếu bạn muốn thêm vào XAML trực tiếp bạn cũng có thể làm

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

bạn cũng có thể implment một IValueConverter rằng khi ràng buộc với một Type, trả về Enum.GetValues ​​

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

Tôi yêu cầu bạn thêm một số ngữ cảnh xung quanh câu trả lời của bạn. Các câu trả lời chỉ có mã hoặc chỉ liên kết rất khó hiểu. Nó sẽ giúp người hỏi và người đọc trong tương lai cả khi bạn có thể thêm nhiều thông tin hơn trong bài đăng của mình. – RBT

1

Shortest Way để thêm giá trị Enum để combobox trong C#

class User{ 

public enum TYPE { EMPLOYEE, DOCTOR, ADMIN }; 

} 

// Thêm lớp này vào sự kiện tải biểu mẫu của Form Cunstructor

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