我正在使用C#中的下拉框(组合框)创建一个程序。我想让用户从框中选择项目,但我需要为项目分配一个整数值,以便我可以执行一些数学运算。
但是,如果我尝试添加这样的值,它就不起作用。
this.selectquest.Items.AddRange(new object[] {
"Level 51", int 5000000
"Level 52", int 5000000
"Level 53", int 5000000});
大声笑,现在看起来可能很荒谬但是啊..
所以我试图找出如何在组合框中为这些字符串添加某个int值,这样我就可以让程序在最后执行数学运算。
答案 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}
};
设置DataSource
,DisplayMember
和ValueMember
属性
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);