根据键、值对设置组合框的选定项
本文关键字:组合 设置 | 更新日期: 2023-09-27 18:16:23
我有一个像这样填充的组合框:
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}?
I have try:
this.reqTypeInput.SelectedIndex = this.reqTypeInput.Items.IndexOf("Value1");
看起来你正试图找到索引,好像你的ComboBox
只包含字符串值,当它实际上包含RequestType
对象。您是否尝试覆盖您的Equals
操作符?
查看这篇SO帖子,以及这篇重写Equals
的示例。
EDIT:正如在另一个答案中提到的,一个好的做法是填充ComboBox
中需要的对象集合,然后将该集合绑定到ComboBox
。我的答案中的第一个链接就是一个例子。
如果请求类型没有改变,您可以首先将每个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;
你可以试试:
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 .
大量的选择,列表,排序列表,字典,排序字典。但是基本上,您将RequestTypes的集合保存在一个列表中,然后从中填充组合,如果您愿意,您甚至可以绑定。
组合所知道的关于请求类型集合的唯一信息是每个RequestType的ToString方法的结果。如果您想按值查找,那么Combox将只看到您输入的内容,即RequestType.ToString()