データソースにバインドされているコンボボックスがあります。このコンボボックスでは、インデックス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にバインドされている場合、Itemを変更することはできません。その後、空白行を追加する唯一のオプションは、データソースを変更することです。空のオブジェクトを作成し、データソースに追加します。例えば。コンボボックスにバインドされたいくつかの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!");
}