【问题标题】:How to show a first item in a combobox in C# Winform如何在 C# Winform 的组合框中显示第一项
【发布时间】:2015-05-07 23:09:24
【问题描述】:

我有一个绑定到列表的组合框。在加载列表中的数据之前,我一直在尝试解决如何在组合框中加载“--请选择--”的第一项。

我试过了,

        cbUpdate.DataSource = _names;
        cbUpdate.Items.Insert(0, "-Select-");
        cbUpdate.SelectedIndex = 0;
        cbUpdate.DisplayMember = "Name";

但这给出了错误,

当 DataSource 属性为 设置。

我了解该错误,但不确定如何解决。我试图将组合框的文本设置为“请选择”,但这不起作用。

var names = new BindingList<Names>();

【问题讨论】:

  • 如果此组合框的数据是通过 Salad 语句检索的,请添加 ˋ--- Please Select ---ˋ 也作为值。或者删除 DataSource 属性,并在您检索到所有数据后。循环遍历项目并一一添加值,包括默认选项

标签: c# winforms combobox


【解决方案1】:

您正在设置数据源并添加一个项目,之后最终会引发错误。更好的方法是先将项目“-Select-”添加到组合框,然后尝试使用 foreach 语句添加列表中的下一个项目,而不是将列表绑定到组合框。

cbUpdate.Items.Clear();
cbUpdate.Items.Add("-Select-");

foreach (string item in thelsit)
{
  cbUpdate.Items.Add(item.ToString());
}

cbUpdate.SelectedIndex = 0;

【讨论】:

    【解决方案2】:

    您必须决定,要么使用Items 属性,然后填写所有选项。或者使用带有所有选项的DataSource

    无论如何,对于“--请选择--”条目,您需要将其作为ItemsDataSource 中的选项之一。或者您可以设置 SelectedText 属性。

    【讨论】:

      【解决方案3】:

      尝试在名称列表中插入“--Select--”文本,然后再将其设置为数据源。

      例子:

      List<Person> list = new List<Person>()  {
                                                  new Person("Jon"),
                                                  new Person("Ram"),
                                                  new Person("Rin")                                       
                                               };
      
                  list.Insert(0, new Person("--Select"));
      
                  comboBox1.DataSource = list;
                  comboBox1.DisplayMember = "Name";
                  comboBox1.Items.Clear();
      

      【讨论】:

        【解决方案4】:

        还有其他方法可以实现这一点。这取决于您如何从数据库中检索值。

        如果你使用的是 select 语句,你可以做一个类似的联合

        // Oracle
        SELECT 0, "---- Please Select ----" from dual 
         UNION
        SELECT [value], [name] from [table] 
        

        您可以指定为数据源的结果。

        另一个选项是删除 DataSource 属性,一旦您掌握了数据,遍历记录集并逐个添加项目,0"---- Please Select ----" 作为 ValueMemberDisplayMember第一项。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-01-05
          • 2018-05-21
          • 1970-01-01
          • 2015-12-14
          • 1970-01-01
          • 2014-07-21
          相关资源
          最近更新 更多