使用C#填充ComboBox

mou*_*iec 29 .net c# combobox winforms

我想用以下内容填充一个组合框:

可见项目/项目值

English / En

Italian / It

Spainish / Sp 

etc....
Run Code Online (Sandbox Code Playgroud)

有什么帮助吗?

也可以在填充Combobox后,使其只读?

All*_*ice 66

定义一个类

public class Language
{
     public string Name { get; set; }
     public string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后...

//Build a list
var dataSource = new List<Language>();
dataSource.Add(new Language() { Name = "blah", Value = "blah" });
dataSource.Add(new Language() { Name = "blah", Value = "blah" });
dataSource.Add(new Language() { Name = "blah", Value = "blah" });

//Setup data binding
this.comboBox1.DataSource = dataSource;
this.comboBox1.DisplayMember = "Name";
this.comboBox1.ValueMember = "Value";

// make it readonly
this.comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
Run Code Online (Sandbox Code Playgroud)


Gre*_*ire 17

创建一个类语言

public class Language
{
     public string Name{get;set;}
     public string Value{get;set;}
     public override string ToString() { return this.Name;}
}
Run Code Online (Sandbox Code Playgroud)

然后,为所需的组合框添加尽可能多的语言:

yourCombobox.Items.Add(new Language{Name="English",Value="En"});
Run Code Online (Sandbox Code Playgroud)


Tia*_*o S 9

简单的方法是:

Dictionary<string, string> dict = new Dictionary<string, string>()
{
    {"English ","En" },
    {"Italian  ","It" },
    {"Spainish  ","Sp " }
};

combo.DataSource = new BindingSource(dict, null);
combo.DisplayMember = "Key";
combo.ValueMember = "Value";
Run Code Online (Sandbox Code Playgroud)


the*_*ost 5

ValueMember/ DisplayMemberproperties 设置为Language对象属性的名称.

class Language
{
    string text;
    string value;

    public string Text
    {
        get 
        {
            return text;
        }
    }

    public string Value
    {
        get
        {
            return value;
        }
    }

    public Language(string text, string value)
    {
        this.text = text;
        this.value = value;
    }
}

...

combo.DisplayMember= "Text";
combo.ValueMember = "Value";
combo.Items.Add(new Language("English", "en"));
Run Code Online (Sandbox Code Playgroud)


Wil*_*ler 5

要使其只读,请将 DropDownStyle 属性设置为 DropDownStyle.DropDownList。

要填充组合框,您需要有一个像语言这样的对象,其中包含两者,例如:

public class Language {
    public string Name { get; set; }
    public string Code { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以将 IList 绑定到 ComboBox.DataSource 属性,如下所示:

IList<Language> languages = new List<Language>();
languages.Add(new Language("English", "en"));
languages.Add(new Language("French", "fr"));

ComboxBox.DataSource = languages;
ComboBox.DisplayMember = "Name";
ComboBox.ValueMember = "Code";
Run Code Online (Sandbox Code Playgroud)

这将完全符合您的预期。