需要帮助将(int)值分配给组合框项(字符串)

时间:2014-02-21 02:16:03

标签: c# combobox

我正在使用C#中的下拉框(组合框)创建一个程序。我想让用户从框中选择项目,但我需要为项目分配一个整数值,以便我可以执行一些数学运算。

但是,如果我尝试添加这样的值,它就不起作用。

this.selectquest.Items.AddRange(new object[] {
        "Level 51", int 5000000
        "Level 52", int 5000000
        "Level 53", int 5000000});
大声笑,现在看起来可能很荒谬但是啊..

所以我试图找出如何在组合框中为这些字符串添加某个int值,这样我就可以让程序在最后执行数学运算。

3 个答案:

答案 0 :(得分:2)

您可以使用一个类,例如:

public class Level
{
    public string Name { get; set; }
    public int Number { get; set; }
}

创建Level的列表

var list = new List<Level>
        {
            new Level {Name = "Level 51", Number = 123214},
            new Level {Name = "Level 52", Number = 32343},
            new Level {Name = "Level 53", Number = 32343}
        };

设置DataSourceDisplayMemberValueMember属性

comboBox1.ValueMember = "Number";
comboBox1.DisplayMember = "Name";
comboBox1.DataSource = list;

然后,您可以轻松地在SelectedIndexChanged事件中获取所选值,例如:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
     var selectedValue = (int)comboBox1.SelectedValue;
}

答案 1 :(得分:1)

使用如下自定义类:

class Level
{
    public string Name { get; set; }
    public int Value { get; set; }
}

然后将你的等级添加到组合框:

this.selectquest.Items.AddRange(new Level[] {
    new Level() {Name = "Level 51", Value = 5000000},
    new Level() {Name = "Level 52", Value = 5000000},
    new Level() {Name = "Level 53", Value = 5000000}
});

最后,在您的SelectedIndexChanged中,执行

private void selectquest_SelectedIndexChanged(object sender, EventArgs e)
{
    var v = selectquest.SelectedItem as Level;
    int x = v.Value;
}
编辑:忘了添加:

selectquest.DisplayMember = "Name";

干杯

答案 2 :(得分:0)

只需将它们作为字符串添加到组合框中即可。然后,当提交表单时,您必须将它们转换回如:

int value = Convert.ToInt32(cbo.selectedValue);