如何在组合框中将第一个索引设置为空白

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在组合框中将第一个索引设置为空白相关的知识,希望对你有一定的参考价值。

我有一个与数据源绑定的组合框。在这个组合框中,我必须在索引0处添加一个空白字段。

我写了以下代码来获取记录。

 public List<TBASubType> GetSubType(int typ)
        {
            using (var tr = session.BeginTransaction())
            {
                try
                {
                    List<TBASubType> lstSubTypes = (from sbt in session.Query<TBASubType>()
                                                    where sbt.FType == typ
                                                    select sbt).ToList();


                    tr.Commit();
                    return lstSubTypes;
                }
                catch (Exception ex)
                {
                    CusException cex = new CusException(ex);
                    cex.Write();
                    return null;
                }
            }
        }

在此之后,它与组合框与数据绑定源绑定,如下面的代码。

M3.CM.BAL.CM CMobj = new M3.CM.BAL.CM(wSession.CreateSession());
                lstSubTypes = CMobj.GetSubType(type);
                this.tBASubTypeBindingSource.DataSource = lstSubTypes;
答案

如果您只想最初选择任何内容,则可以使用

comboBox1.SelectedIndex=-1;
另一答案

因此,当您绑定到DataSource时,您无法修改Items,那么只有添加空行的选项才能修改您的数据源。创建一些空对象并将其添加到数据源。例如。如果你有一些绑定到组合框的Person实体的列表:

var people = Builder<Person>.CreateListOfSize(10).Build().ToList();
people.Insert(0, new Person { Name = "" });
comboBox1.DisplayMember = "Name";
comboBox1.DataSource = people;

您可以在类中定义静态属性Empty

public static readonly Person Empty = new Person { Name = "" };

并使用它来插入默认的空白项:

people.Insert(0, Person.Empty);

这也将允许检查所选项是否是默认项:

private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
{
    Person person = (Person)comboBox.SelectedItem;
    if (person == Person.Empty)
        MessageBox.Show("Default item selected!");
}    

以上是关于如何在组合框中将第一个索引设置为空白的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PyQt/PySide 中将项目添加到 QComboBox

如何在组合框中将项目设置为选中

如何在 JavaScript 中将字符串转换为 JSON?

如何在 Access 中将一个控件源与来自用户表单的多个组合框一起使用?

如何通过代码填充多列组合框?

如何在一列中为不同的组合框设置不同的商店?