¿Cómo configuro el elemento seleccionado en un comboBox para que coincida con mi cadena usando C #?

Tengo una cadena “test1” y mi comboBox contiene test1 , test2 y test3 . ¿Cómo configuro el elemento seleccionado a “prueba1”? Es decir, ¿cómo puedo unir mi cadena a uno de los elementos de comboBox?

Estaba pensando en la línea de abajo, pero esto no funciona.

 comboBox1.SelectedText = "test1"; 

Esto debería funcionar:

 Combox1.SelectedIndex = Combox1.FindStringExact("test1") 

¿Has probado la propiedad Text ? Esto funciona para mi.

 ComboBox1.Text = "test1"; 

La propiedad SelectedText es para la parte seleccionada del texto editable en la parte de cuadro de texto del cuadro combinado.

Suponiendo que su cuadro combinado no esté enlazado a datos, necesitará encontrar el índice del objeto en la colección “artículos” en su formulario y luego establecer la propiedad “indexado seleccionado” en el índice apropiado.

 comboBox1.SelectedIndex = comboBox1.Items.IndexOf("test1"); 

Tenga en cuenta que la función IndexOf puede arrojar una opinión discutida si el elemento no se encuentra.

Si los artículos en su ComboBox son cadenas, puede intentar:

 comboBox1.SelectedItem = "test1"; 

Para mí esto solo funcionaba:

 foreach (ComboBoxItem cbi in someComboBox.Items) { if (cbi.Content as String == "sometextIntheComboBox") { someComboBox.SelectedItem = cbi; break; } } 

MOD: y si tiene sus propios objetos como elementos configurados en el cuadro combinado, entonces sustituya el ComboBoxItem por uno de ellos como:

 foreach (Debitor d in debitorCombo.Items) { if (d.Name == "Chuck Norris") { debitorCombo.SelectedItem = d; break; } } 

SelectedText es para obtener o establecer el texto real en el editor de cadenas para el elemento seleccionado en el cuadro combinado como se documenta aquí . Esto no se puede editar si configuras:

 comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 

Utilizar:

 comboBox1.SelectedItem = "test1"; 

o:

 comboBox1.SelectedIndex = comboBox1.Items.IndexOf("test1"); 

He usado un método de extensión:

 public static void SelectItemByValue(this ComboBox cbo, string value) { for(int i=0; i < cbo.Items.Count; i++) { var prop = cbo.Items[i].GetType().GetProperty(cbo.ValueMember); if (prop!=null && prop.GetValue(cbo.Items[i], null).ToString() == value) { cbo.SelectedIndex = i; break; } } } 

Entonces solo consum el método:

 ddl.SelectItemByValue(value); 
 comboBox1.SelectedItem.Text = "test1"; 

Suponiendo que test1, test2, test3 pertenecen a la colección comboBox1, la siguiente statement funcionará.

 comboBox1.SelectedIndex = 0; 

Esta solución se basa en MSDN con algunas modificaciones que hice.

  • Encuentra la cadena exacta o PARTE de cadena y la establece.

     private int lastMatch = 0; private void textBoxSearch_TextChanged(object sender, EventArgs e) { // Set our intial index variable to -1. int x = 0; string match = textBoxSearch.Text; // If the search string is empty set to begining of textBox if (textBoxSearch.Text.Length != 0) { bool found = true; while (found) { if (comboBoxSelect.Items.Count == x) { comboBoxSelect.SelectedIndex = lastMatch; found = false; } else { comboBoxSelect.SelectedIndex = x; match = comboBoxSelect.SelectedValue.ToString(); if (match.Contains(textBoxSearch.Text)) { lastMatch = x; found = false; } x++; } } } else comboBoxSelect.SelectedIndex = 0; } 

¡Espero haber ayudado!

He llenado mi ComboBox con una DataTable llena de una base de datos. Luego configuré el DisplayMember y el ValueMember. Y uso este código para establecer el elemento seleccionado.

 foreach (DataRowView Row in ComboBox1.Items) { if (Row["ColumnName"].ToString() == "Value") ComboBox1.SelectedItem = Row; } 

No tiene esa propiedad en el ComboBox. Tiene SelectedItem o SelectedIndex. Si tiene los objetos que utilizó para llenar el cuadro combinado, puede usar SelectedItem.

Si no, puede obtener la colección de elementos (Elementos de propiedad) e iterar hasta que obtenga el valor que desea y usarlo con las otras propiedades.

Espero eso ayude.

 _cmbTemplates.SelectedText = "test1" 

o tal vez

 _cmbTemplates.SelectedItem= _cmbTemplates.Items.Equals("test1"); 
  • Enumerate ListItems en combobox
  • Obtenga los mismos listindex set combobox
  • Establezca listindex en el encontrado.

Pero si veo un código como un revisor de código, recomendaría reconsiderar todo el algoritmo del método.

Utilicé KeyValuePair para el enlace de datos ComboBox y quería encontrar el artículo por valor, así que esto funcionó en mi caso:

 comboBox.SelectedItem = comboBox.Items.Cast>().First(item=> item.Value == "value to match"); 
  ListItem li = DropDownList.Items.FindByValue("13001"); DropDownList.SelectedIndex = ddlCostCenter.Items.IndexOf(li); 

Para su caso, puede usar

 DropDownList.Items.FindByText("Text"); 
 combo.Items.FindByValue("1").Selected = true; 

Todos los métodos, trucos y líneas de configuración de código del elemento ComboBox no funcionarán hasta que el ComboBox tenga un elemento primario.

Creé una función que devolverá el índice del valor

  public static int SelectByValue(ComboBox comboBox, string value) { int i = 0; for (i = 0; i <= comboBox.Items.Count - 1; i++) { DataRowView cb; cb = (DataRowView)comboBox.Items[i]; if (cb.Row.ItemArray[0].ToString() == value)// Change the 0 index if your want to Select by Text as 1 Index { return i; } } return -1; } 

esto funciona para mí …..

 comboBox.DataSource.To().Select(" valueMember = '" + valueToBeSelected + "'")[0]["DislplayMember"]; 

Puede decir comboBox1.Text = comboBox1.Items[0].ToString();

Por favor, intente de esta manera, funciona para mí:

 Combobox1.items[Combobox1.selectedIndex] = "replaced text"; 

Deberia de funcionar

 Yourcomboboxname.setselecteditem("yourstring"); 

Y si quiere establecer una cadena de base de datos, use esto

 Comboboxname.setselecteditem(ps.get string("databasestring"));