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)
简单的方法是:
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)
将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)
要使其只读,请将 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)
这将完全符合您的预期。