【问题标题】:VC++ CLI/CLR, winforms combobox bind datasource to enumVC++ CLI/CLR,winforms 组合框绑定数据源到枚举
【发布时间】:2011-03-08 05:50:21
【问题描述】:

我有一个这样的枚举

enum class distance 

    {ten=10,twenty=20};

和一个其数据源绑定到此枚举的组合框:

this->comboBox1->DataSource=Enum::GetValues(distance::typeid)

我预计上面会返回 10,20,但我却得到了 10、20。

如何在组合框中显示值而不是名称?

【问题讨论】:

    标签: winforms visual-c++ enums datasource


    【解决方案1】:

    更新:您需要整数值,而不是名称。这仍然需要 Enum::GetValues() 来获取枚举值,但必须将它们强制转换为 int 以便 ToString() 覆盖不会生成名称。让它看起来像这样:

            enum class distance {ten=10,twenty=20};
    
            Form1(void)
            {
                InitializeComponent();
                Array^ values = Enum::GetValues(distance::typeid);
                array<int>^ display = gcnew array<int>(values->Length);
                for (int ix = 0; ix < values->Length; ++ix) {
                    display[ix] = (int)values->GetValue(ix);
                }
                comboBox1->DataSource = display;
            }
    

    Form1(void) 是表单类的构造函数。

    【讨论】:

    • GetNames 也给出了相同的结果
    • 当然不可能得到同样的结果。当我尝试它时它工作得很好,组合框下拉列表中充满了字符串,而不是数字。我猜不出为什么当你尝试这个时它不起作用,用你尝试过的代码更新你的问题。
    • 我的代码在上面。 GetNames 给了我字符串 10、20 的名字,GetValues(distance::typeid) 也给了我下拉框中的值 10,20 而不是名字但是 GetValues 也给了我名字
    • 如何在这个组合框中设置 selectedVALue 或 selectedItem?
    猜你喜欢
    • 2010-10-28
    • 1970-01-01
    • 2011-08-04
    • 2018-11-12
    • 2020-02-07
    • 1970-01-01
    • 2014-10-04
    • 2010-09-08
    相关资源
    最近更新 更多