0

以下の画像のように、Windows アプリケーションに 1 つのフォームがあります。

My Windowから

このコードを使用して、「Designer.cs」のコンボボックスにテキストを表示しようとしました:

this.cmbLanguage.FormattingEnabled = true;
this.cmbLanguage.Items.AddRange(new object[] {
    Language.LSelectLang.LANGUAGE_ENGLISH,               //"English",
    "Chinese_TC",
    "Chinese_SC",
    Language.LSelectLang.LANGUAGE_GERMAN,                //"German",
    Language.LSelectLang.LANGUAGE_FRENCH,                //"French",
    Language.LSelectLang.LANGUAGE_JAPANESE,              //"Japanese",
    Language.LSelectLang.LANGUAGE_SPANISH,               //"Spanish",
    Language.LSelectLang.LANGUAGE_HINDI});               //"Hindi"});

それでいいのですが、コンボボックスの特定のテキスト表示にアクセスするための値の型も渡したいです。

それで、それをコンボボックスに渡す方法は?

4

1 に答える 1

1

残念ながら、Win Form は Web のように定義しませんが、独自のクラスを定義してからメソッドListItemをオーバーライドできます。ToString

public class YourItem<T>
{
    public string Text { get; set; }
    public T Value { get; set; }

    public override string ToString()
    {
        return Text;
    }
}

次に、次を使用できます。

var item = new YourItem<string>() { 
             Text = "text", 
             Value = "value" 
       };

cmbLanguage.Items.Add(item);

値にアクセスするには:

    var selectedItem = (YourItem<string>) cmbLanguage.SelectedItem;
    var value = selectedItem.Value;
于 2012-09-24T06:07:34.510 に答える