【问题标题】:adding enum values to a simple combobox将枚举值添加到简单的组合框
【发布时间】:2013-02-09 01:20:55
【问题描述】:

我有一个关于 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
    }

好的,我的问题是如何将值(例如 Human、dwarf、elf....)添加到组合框中:cbRace?抱歉,我是 C# 的新手,所以如果有人可以帮助我,我将不胜感激:),在此先感谢。

【问题讨论】:

  • 上面的代码不适合你吗?

标签: c# wpf combobox enums


【解决方案1】:
cmbUserType.Items.AddRange(core.Global.ToObjectArray(Enum.GetValues(typeof(STATUS))));
public enum STATUS { INACTIVE, ACTIVE }

【讨论】:

  • 我请求您为您的答案添加更多上下文。仅代码或仅链接的答案很难理解。如果您可以在帖子中添加更多信息,这将对提问者和未来的读者都有帮助。
【解决方案2】:

在 C# 中将枚举值添加到组合框的最短方法

class User{

public enum TYPE { EMPLOYEE, DOCTOR, ADMIN };

}

// 将此类添加到Form Cunstructor的表单加载事件中

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

【讨论】:

    【解决方案3】:

    这不是首选的解决方案,因为 Clemens 已经给你了,但如果你想直接添加 XAML,你也可以这样做

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

    您还可以实现一个 IValueConverter,当绑定到一个类型时,它会返回 Enum.GetValues

    【讨论】:

      【解决方案4】:

      这可能是设置 ComboBox 项的最简单方法:

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

      不必遍历枚举值,只需设置ItemsSource 属性即可。

      【讨论】:

        【解决方案5】:

        使用这个

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

        将您的枚举数据绑定到组合框,然后使用组合框的 selectedValue 和 selectedText 属性来检索名称和值;

        【讨论】:

          【解决方案6】:

          你应该可以做这样的事情:

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

          查看this 答案以获取有关设置和检索枚举值的更多信息。

          【讨论】:

          • 注意:在 WPF 中是ItemsSource 属性。
          • 这是最佳答案!!
          【解决方案7】:
          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
              }
          

          【讨论】:

          • Enum.GetValues 将返回您的类型枚举列表。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-08-19
          • 1970-01-01
          • 1970-01-01
          • 2020-07-26
          • 2011-08-04
          • 2018-11-12
          • 2020-02-07
          相关资源
          最近更新 更多