首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何设置默认组合框

如何设置默认组合框
EN

Stack Overflow用户
提问于 2013-01-30 02:44:06
回答 5查看 84K关注 0票数 17

因此,我一直在寻找为我的组合框设置默认值。我找到了一些东西,但它们似乎都不起作用。

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

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

代码语言:javascript
复制
        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]));
        }

我似乎不能让它工作来设置默认值,比如如果我把cbxCategory.SelectedIndex = cbxCategory.Items.IndexOf("New")放在上面的代码下面,它就不会工作。

顺便说一下,是WinForms。

提前谢谢你。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-01-30 02:46:54

cbxCategory.SelectedIndex应设置为从0Items.Count-1的整数,如

代码语言:javascript
复制
cbxCategory.SelectedIndex  = 2;

你的

代码语言:javascript
复制
 cbxCategory.SelectedIndex = cbxCategory.Items.IndexOf("New") 

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

尽管我不太喜欢,但另一个解决方案是

代码语言:javascript
复制
foreach(object obj in cbxCategory.Items){ 
    String[2] objArray = (String[])obj ;
    if(objArray[1] == "New"){
       cbxCategory.SelectedItem = obj;
       break; 
    }
}

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

代码语言:javascript
复制
    foreach (string[] result in list)
    {
      cbxCategory.Items.Add(result);
    }

我还没有测试代码,也不确定转换为String2的情况,但类似的东西应该可以工作

票数 24
EN

Stack Overflow用户

发布于 2013-01-30 02:56:24

看起来您是在cbxCategory.Items集合中搜索字符串,但它包含ComboBoxItem类型的项。因此,搜索将返回-1。

票数 1
EN

Stack Overflow用户

发布于 2013-01-30 03:10:06

您可以使用LINQ。

代码语言:javascript
复制
//string command = "SELECT category_id, name FROM CATEGORY ORDER BY name";
//List<string[]> list = database.Select(command, false);
// sample data...
List<string[]> list = new List<string[]> { new string[] { "aaa", "bbb" }, new string[] { "ccc", "ddd" } };

cbxCategory.Items.Clear();

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

ComboBoxItem tmp = cbxCategory.Items.OfType<ComboBoxItem>().Where(x => x.ResultFirst == "bbb").FirstOrDefault();
if (tmp != null)
    cbxCategory.SelectedIndex = cbxCategory.Items.IndexOf(tmp);

ComboBoxItem类:

代码语言:javascript
复制
class ComboBoxItem
{
    public string ResultFirst { get; set; }
    public string ResultSecond { get; set; }

    public ComboBoxItem(string first, string second)
    {
        ResultFirst = first;
        ResultSecond = second;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14589964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档