visual - llenar combobox c# manualmente




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

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

¿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.


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

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!


Esto debería funcionar:

Combox1.SelectedIndex = Combox1.FindStringExact("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 consuma el método:

ddl.SelectItemByValue(value);

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.


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

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

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


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

comboBox1.SelectedItem = "test1";

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.


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.


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<KeyValuePair<string,string>>().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");

_cmbTemplates.SelectedText = "test1"

o tal vez

_cmbTemplates.SelectedItem= _cmbTemplates.Items.Equals("test1");

comboBox1.SelectedItem.Text = "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.







combobox