Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Set default combobox

So I've been looking to set a default value for my combobox. I found a few things but none of them seem to work.

Actually, it works if I create a simple combobox and use comboBox1.SelectedIndex = comboBox1.Items.IndexOf("something") but once I dynamically generate the contents of the comboboxes, I can't get it to work anymore.

This is how I fill my combo box (located in the class's constructor);

        string command = "SELECT category_id, name FROM CATEGORY ORDER BY name";
        List<string[]> list = database.Select(command, false);

        cbxCategory.Items.Clear();

        foreach (string[] result in list)
        {
            cbxCategory.Items.Add(new ComboBoxItem(result[1], result[0]));
        }

I can't seem to get it to work to set a default value, like if I place cbxCategory.SelectedIndex = cbxCategory.Items.IndexOf("New") below the above code, it won't work.

WinForms, by the way.

Thank you in advance.

like image 930
Roel Avatar asked Jan 29 '13 18:01

Roel


People also ask

Is the default event of ComboBox control?

By default, DropDownStyle property of a Combobox is DropDown. In this case user can enter values to combobox. When you change the DropDownStyle property to DropDownList, the Combobox will become read only and user can not enter values to combobox.

How can add default value in ComboBox in VB net?

How to show default value in ComboBox in vb net? Much simpler solution, Select the Combo-box, and in the option of Selected item, select the item index (0 for the first item) and set it to be the default value in the combo box.

How do I make a ComboBox not editable?

To make the text portion of a ComboBox non-editable, set the DropDownStyle property to "DropDownList". The ComboBox is now essentially select-only for the user. You can do this in the Visual Studio designer, or in C# like this: stateComboBox.


1 Answers

cbxCategory.SelectedIndex should be set to an integer from 0 to Items.Count-1 like

cbxCategory.SelectedIndex  = 2;

your

 cbxCategory.SelectedIndex = cbxCategory.Items.IndexOf("New") 

should return -1 as long as no ComboboxItem mutches the string ("New");

another solution though i don't like it much would be

foreach(object obj in cbxCategory.Items){ 
    String[2] objArray = (String[])obj ;
    if(objArray[1] == "New"){
       cbxCategory.SelectedItem = obj;
       break; 
    }
}

perhaps this also requires the following transformation to your code

    foreach (string[] result in list)
    {
      cbxCategory.Items.Add(result);
    }

I haven't tested the code and i am not sure about the casting to String[2] but something similar should work

like image 189
iltzortz Avatar answered Sep 22 '22 17:09

iltzortz