話題になっていたのでさらしてみた。
・シングルトン化した。
・デザイン時はDBを読まないように
デザイナにはbindingSourceを貼り付けてあります。
都道府県DataSet /都道府県TableAdapter は都道府県DataSet.xsdが別にあります。
public partial class 都道府県ComboBox : ComboBox, ISupportInitialize
{
public 都道府県ComboBox()
{
InitializeComponent();
if (都道府県DataSet == null)
{
InitializeDataSet();
}
this.bindingSource.DataSource = 都道府県DataSet;
this.DataSource = this.bindingSource;
this.ValueMember = "都道府県.コード";
this.DisplayMember = "都道府県.名称";
}
static private SampleApplication.Data.都道府県DataSet 都道府県DataSet = null;
static private SampleApplication.Data.都道府県DataSetTableAdapters.都道府県TableAdapter 都道府県TableAdapter;
private void InitializeDataSet()
{
都道府県DataSet = new SampleApplication.Data.都道府県DataSet();
都道府県TableAdapter = new SampleApplication.Data.都道府県DataSetTableAdapters.都道府県TableAdapter();
((System.ComponentModel.ISupportInitialize)(都道府県DataSet)).BeginInit();
都道府県DataSet.DataSetName = "都道府県DataSet";
都道府県DataSet.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
都道府県TableAdapter.ClearBeforeFill = true;
((System.ComponentModel.ISupportInitialize)(都道府県DataSet)).EndInit();
}
#region ISupportInitialize メンバ
public void BeginInit()
{
}
public void EndInit()
{
if (!this.DesignMode)
{
if (都道府県DataSet.都道府県.Count == 0)
{
都道府県TableAdapter.Fill(都道府県DataSet.都道府県);
}
}
}
#endregion
}