根据键、值对设置组合框的选定项

本文关键字:组合 设置 | 更新日期: 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()