假设我有这些项目:
comboBox.Items.Add("Access"); // make it equal to 31
comboBox.Items.Add("Create"); // make it equal to 34
comboBox.Items.Add("Delete"); // make it equal to 36
comboBox.Items.Add("Modify"); // make it equal to 38
现在,我打电话给
comboBox.SelectedIndex = 34; // want to "Create" item has been chosen
最简单的方法是什么?
答案 0 :(得分:1)
不幸的是,winforms没有像ASP.NET那样的ListItem
类,所以你必须自己编写:
public class cbxItem
{
public string text {get;set;}
public int id {get;set;}
public override string ToString()
{
return text;
}
// you need this override, else your combobox items are gonna look like
// "Winforms.Form1 + cbxItem"
}
然后将项目添加到您的组合框中,如下所示:
cbxItem item = new cbxItem();
item.text = "Access";
item.id = 31;
comboBox.Items.Add(item);
要获取“id”或“value”,或者您想要调用它:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
var cbxMember = comboBox1.Items[comboBox1.SelectedIndex] as cbxItem;
if (cbxMember != null) // safety check
{
var value = cbxMember.id;
}
}
答案 1 :(得分:1)
这在很大程度上取决于您的数据管理方式。
如果您的项目不会在程序过程中被修改,您只需使用字典作为映射表。
comboBox.Items.Add("Access"); // make it equal to 31
comboBox.Items.Add("Create"); // make it equal to 34
comboBox.Items.Add("Delete"); // make it equal to 36
comboBox.Items.Add("Modify"); // make it equal to 38
Dictionary<int, int> mapTable = new Dictionary<int, int>();
mapTable.Add(31, 0);
mapTable.Add(34, 1);
mapTable.Add(36, 2);
mapTable.Add(38, 3);
然后只需使用以下内容:
comboBox.SelectedIndex = mapTable[34];
您甚至可以将此逻辑放在一个继承自ComboBox的类中,以便更好地进行抽象。
答案 2 :(得分:0)
您想使用SelectedValue代替SelectedIndex。索引只是一个计数(0,1,2,3 ......)。可以指定值。
答案 3 :(得分:0)
您需要添加比简单字符串更复杂的内容来执行您想要的操作。如果您想要的只是一个int和一个关联的字符串,那么您可以使用KeyValuePair,但任何自定义对象都可以使用。然后,您需要在comboBox上设置DisplayMember和ValueMember,以便正确显示。哦,使用SelectedValue或SelectedMember而不是SelectedIndex。
这是你的补充:
comboBox.Items.Add(new KeyValuePair<int, string>(){ Key = 34, Value = "Access"});
是的,自定义对象会使这个说法更简单,但概念是相同的。
答案 4 :(得分:0)
comboBox.Items.Add(new WorkItem { Key = 31, Value = "Access" });
comboBox.Items.Add(new WorkItem { Key = 34, Value = "Create" });
comboBox.Items.Add(new WorkItem { Key = 36, Value = "Delete" });
comboBox.Items.Add(new WorkItem { Key = 38, Value = "Modify" });
selectItemByKey(34);
您需要添加此方法:
private void selectItemByKey(int key)
{
foreach (WorkItem item in comboBox.Items)
{
if (item.Key.Equals(key))
comboBox.SelectedItem = item;
}
}`
这样的课程:
public class WorkItem
{
public int Key { get; set; }
public string Value { get; set; }
public WorkItem()
{
}
public override string ToString()
{
return Value;
}
}