0

我有这种形式,我需要在其中使用数据库中的文本值对填充组合框,以便我可以在对数据库的更新查询中使用该值

我发现了一些方法,它使用一个类来制作同时具有文本和值的对象:

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;
        }

我像这样将它们添加到组合框中

RequestType type1 = new RequestType("Label 1", "Value 1");
            RequestType type2 = new RequestType("Label 2", "Value 2");

            comboBox1.Items.Add(type1);
            comboBox1.Items.Add(type2);

            comboBox1.SelectedItem = type2;

现在我不知道如何检索所选项目的值,即选择了 id 标签 1,它必须返回 value1,如果选择了标签 2,它返回 value2,

有什么帮助吗???提前谢谢

4

4 回答 4

0

我想你可以使用:

if (combobox1.SelectedItem != null)
    val2 = (comboBox1.SelectedItem as RequestType).Value;

或者

string val2 = combobox1.SelectedItem != null ?
                  (comboBox1.SelectedItem as RequestType).Value :
                  null;
于 2012-07-05T07:15:48.800 回答
0
RequestType type = (RequestType)comboBox1.SelectedItem;

现在,所选项目的价值 =type.Value

于 2012-07-05T07:20:13.267 回答
0

组合框的 Items 集合属于ObjectCollection类型,因此当您使用

comboBox1.Items.Add(type1); 

您正在向集合中添加一个 RequestType 对象。
现在,当您想从该集合中检索单个选定项目时,您可以使用这样的语法

RequestType t = comboBox1.SelectedItem as RequestType;

从理论上讲,(当您完全控制组合框项的添加时)您可以避免检查使用as关键字应用的转换是否成功,但事实并非如此,因为 SelectedItem 可能为空,因此它总是一个好的练习测试

   if(t != null)
   {
       Console.WriteLine(t.Value + " " + t.Text);
   }
于 2012-07-05T07:20:23.643 回答
0

您可以将 comboBox1.SelectedItem 转换为您的类型 RequestType,然后您可以读取其属性。

于 2012-07-05T07:20:50.237 回答