如何给组合框提供文本值和值属性?

时间:2012-09-24 05:48:11

标签: c# winforms combobox

我在Windows应用程序中有一个表单,如下图所示:

My Windowfrom

我尝试使用此代码在“Designer.cs”中的comboBox中显示文本:

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

没关系,但是我想传递一个值类型来访问组合框中的特定文本显示。

那么,如何在我的组合框中传递它?

1 个答案:

答案 0 :(得分: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;