我有一个像这样填充的组合框:
this.reqTypeInput.Items.Add(new RequestType("Label 1", "Value1"));
this.reqTypeInput.Items.Add(new RequestType("Label 2", "value2"));
this.reqTypeInput.Items.Add(new RequestType("Label 3", "value3"));
我的RequestType类是:
class RequestType
{
public string Text { get; set; }
public string Value { get; set; }
public RequestType(string text, string val)
{
Text = text;
Value = val;
}
public override string ToString()
{
return Text;
}
}
我有一个值,例如“Value1”。如何将组合框的selectedItem设置为对象{Label 1,Value1}?
我试过了:
this.reqTypeInput.SelectedIndex = this.reqTypeInput.Items.IndexOf("Value1");
答案 0 :(得分:5)
看起来您正在尝试查找索引,就像ComboBox
只包含字符串值一样,当它实际包含RequestType
个对象时。您是否尝试覆盖Equals
运营商?
结帐this SO post和this one了解覆盖Equals
的示例。
编辑:如另一个答案所述,一个好的做法是在ComboBox
中填充您想要的对象集合,然后将该集合绑定到ComboBox
。我的答案中的第一个链接就是一个例子。
答案 1 :(得分:3)
如果请求类型没有更改,您可以先将每个RequestType对象存储在变量中,然后将ComboBox的SelectedItem属性设置为该变量。
例如:
RequestType type1 = New RequestType("Label 1", "Value 1");
RequestType type2 = New RequestType("Label 2", "Value 2");
reqTypeInput.Items.Add(type1);
reqTypeInput.Items.Add(type2);
然后,设置如下:
reqTypeInput.SelectedItem = type2;
答案 2 :(得分:1)
你可以试试这个:
RequestType type1 = New RequestType("Label 1", "Value 1");
RequestType type2 = New RequestType("Label 2", "Value 2");
reqTypeInput.Items.Add(type1);
reqTypeInput.Items.Add(type2);
this.reqTypeInput.SelectedIndex = this.reqTypeInput.Items.IndexOf(type1);
HTH。
答案 3 :(得分:0)
Lot的选择,List,SortedList,Dictionary,SortedDictionary。 但是你可以将你的RequestTypes集合保存在列表中,然后从中填充组合,如果你愿意,你甚至可以绑定。
每个RequestType的ToString方法的结果是组合管理器对你的请求类型集合的唯一要求。如果你想通过Value查找,那么Combox只会看到你输入的内容,即RequestType.ToString()