如何设置默认组合框

Roe*_*oel 17 c# combobox populate winforms

所以我一直在寻找为我的组合框设置一个默认值.我发现了一些东西但它们似乎都没有用.

实际上,如果我创建一个简单的组合框并使用它,comboBox1.SelectedIndex = comboBox1.Items.IndexOf("something")但是一旦我动态生成组合框的内容,它就无法工作了.

这是我填充我的组合框(位于类的构造函数中);

        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]));
        }
Run Code Online (Sandbox Code Playgroud)

我似乎无法让它设置默认值,就像我放在cbxCategory.SelectedIndex = cbxCategory.Items.IndexOf("New")上面的代码下面,它将无法正常工作.

顺便说一句,WinForms.

先感谢您.

ilt*_*rtz 24

cbxCategory.SelectedIndex 应该从设置为一个整数0,以Items.Count-1类似

cbxCategory.SelectedIndex  = 2;
Run Code Online (Sandbox Code Playgroud)

您的

 cbxCategory.SelectedIndex = cbxCategory.Items.IndexOf("New") 
Run Code Online (Sandbox Code Playgroud)

只要没有ComboboxItem变换字符串("New"),就应该返回-1;

另一个解决方案,虽然我不喜欢它会有多少

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

也许这也需要对您的代码进行以下转换

    foreach (string[] result in list)
    {
      cbxCategory.Items.Add(result);
    }
Run Code Online (Sandbox Code Playgroud)

我没有测试代码,我不确定转换为String [2],但类似的东西应该工作