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 が選択されている場合、値 1 を返す必要があり、ラベル 2 が選択されている場合は値 2 を返します。

何か助けてください??? 事前にサンクス

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 が null になる可能性があるため、これは当てはまりません。でテストする練習

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

コンボボックス 1.SelectedItem を自分のタイプである RequestType にキャストすると、そのプロパティを読み取ることができます。

于 2012-07-05T07:20:50.237 に答える