Poblando un ComboBox usando C #

Me gustaría rellenar un cuadro combinado con lo siguiente:

Elemento visible / Valor del artículo

English / En Italian / It Spainish / Sp etc.... 

¿Alguna ayuda por favor?

También es posible que después de rellenar el Combobox, para que sea de solo lectura?

Define una clase

 public class Language { public string Name { get; set; } public string Value { get; set; } } 

entonces…

 //Build a list var dataSource = new List(); 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; 

Crear un lenguaje de clase

 public class Language { public string Name{get;set;} public string Value{get;set;} public override string ToString() { return this.Name;} } 

Luego, agregue tantos idiomas al cuadro combinado que desee:

 yourCombobox.Items.Add(new Language{Name="English",Value="En"}); 

Establezca las propiedades ValueMember / DisplayMember con el nombre de las propiedades de sus objetos de 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")); 

Para hacerlo de solo lectura, la propiedad DropDownStyle a DropDownStyle.DropDownList.

Para llenar el ComboBox, necesitará tener un objeto como Language o que contenga ambos, por ejemplo:

 public class Language { public string Name { get; set; } public string Code { get; set; } } 

Luego, puede vincular un IList a su propiedad ComboBox.DataSource de la siguiente manera:

 IList languages = new List(); languages.Add(new Language("English", "en")); languages.Add(new Language("French", "fr")); ComboxBox.DataSource = languages; ComboBox.DisplayMember = "Name"; ComboBox.ValueMember = "Code"; 

Esto hará exactamente lo que esperas.

  Language[] items = new Language[]{new Language("English", "En"), new Language("Italian", "It")}; languagesCombo.ValueMember = "Alias"; languagesCombo.DisplayMember = "FullName"; languagesCombo.DataSource = items.ToList(); languagesCombo.DropDownStyle = ComboBoxStyle.DropDownList; class Language { public string FullName { get; set; } public string Alias { get; set; } public Language(string fullName, string alias) { this.FullName = fullName; this.Alias = alias; } } 

Al hacer que el cuadro desplegable sea de “solo lectura”, asumo que desea evitar que el usuario escriba otras opciones en lugar de ser de solo lectura donde los usuarios no pueden seleccionar un valor.

Si quisiera que fuera completamente de solo lectura, podría establecer que la propiedad habilitada sea falsa.

Lo que podría hacer es crear una nueva clase, similar al ejemplo de ToString() , sin embargo, desearía anular el método ToString() para que aparezca correctamente en el cuadro combinado, por ejemplo

 public class Language { private string _name; private string _code; public Language(string name, string code) { _name = name; _code = code; } public string Name { get { return _name; } } public string Code { get { return _code; } } public override void ToString() { return _name; } } 

Si simplemente quieres agregarlo sin crear una nueva clase, prueba esto:

 // WPF  // C# code private void language_Loaded(object sender, RoutedEventArgs e) { List language= new List(); language.Add("English"); language.Add("Spanish"); language.Add("ect"); this.chartReviewComboxBox.ItemsSource = language; } 

Sugiero un archivo xml con todos sus idiomas que admitirá de esa manera. No tiene que depender de c # Definitivamente crearía una clase para languge como lo sugiere el progtwigdor anterior.

No hay necesidad de usar un lenguaje de clase particular,

Simplemente reemplazarlo con:

 KeyValuePair 

pero, ¿no solo obtiene el nombre de su cuadro combinado y luego items.add("") ?

Por ejemplo

 Language.Items.Add("Italian"); Language.Items.Add("English"); Language.Items.Add("Spanish"); 

Espero que esto ayude: D