|
■No68988 (Яアルビノフォックス さん) に返信
> 後にデータベースに書き込むことになるのでボックスへのバインドで処理したいのです。
特に CheckedListBox へのこだわりが無いのであれば、
単純に CheckBox を並べて使うと言う手もあります。
// 実際はデータベースから取得
DataSet CreateSample()
{
var ds1 = new DataSet();
var tbl = ds1.Tables.Add("TBL");
tbl.Columns.Add("管理番号", typeof(int));
tbl.Columns.Add("基準年度-2", typeof(bool));
tbl.Columns.Add("基準年度-1", typeof(bool));
tbl.Columns.Add("基準年度-0", typeof(bool));
tbl.Columns.Add("基準年度格納", typeof(int));
tbl.PrimaryKey = new DataColumn[] { tbl.Columns["管理番号"] };
tbl.Rows.Add(1, true, true, true, 2010);
tbl.Rows.Add(2, true, true, false, 2011);
return ds1;
}
private DataSet ds;
private void Form1_Load(object sender, EventArgs e)
{
ds = CreateSample();
bindingSource1.DataSource = ds.Tables["TBL"];
comboBox1.DataSource = bindingSource1;
comboBox1.DisplayMember = "管理番号";
checkBox1.DataBindings.Add("Checked", bindingSource1, "基準年度-2");
checkBox2.DataBindings.Add("Checked", bindingSource1, "基準年度-1");
checkBox3.DataBindings.Add("Checked", bindingSource1, "基準年度-0");
}
private void bindingSource1_CurrentChanged(object sender, EventArgs e)
{
var row = ((DataRowView)bindingSource1.Current).Row;
int y = (int)row["基準年度格納"];
checkBox1.Text = string.Format("{0}年度", y - 2);
checkBox2.Text = string.Format("{0}年度", y - 1);
checkBox3.Text = string.Format("{0}年度", y - 0);
}
|