|
■No90102 (やまびこ さん) に返信 > 2つのリストボックスがあり、片方から片方へとデータを移動させる
データバインドをお使いということであれば、 それぞれの ListBox に別々の DataTable を用意して、行を移動させる方法と、 両方の ListBox に同一の DataTable を共有させ、フィルターで絞り込む方法がありますね。
private void Form1_Load(object sender, EventArgs e) { DataTable tbl = CreateSampleTable();
tbl.Columns.Add("Selected", typeof(bool)); listBox1.DataSource = new DataView(tbl, "ISNULL(Selected, false)=false", "", DataViewRowState.CurrentRows); listBox2.DataSource = new DataView(tbl, "ISNULL(Selected, false)=true", "", DataViewRowState.CurrentRows); listBox1.DisplayMember = listBox2.DisplayMember = "名前";
MouseEventHandler MoveItem = (o, arg) => { var rowView = ((ListBox)o).SelectedItem as DataRowView; if (rowView != null) { rowView.BeginEdit(); rowView["Selected"] = (o == listBox1); rowView.EndEdit(); } }; listBox1.MouseDoubleClick += MoveItem; listBox2.MouseDoubleClick += MoveItem; }
private static DataTable CreateSampleTable() { var tbl = new DataTable("果物"); tbl.Columns.Add("名前"); tbl.Rows.Add("麝香猫果"); tbl.Rows.Add("無花果"); tbl.Rows.Add("葡萄柚"); tbl.Rows.Add("五歛子"); tbl.Rows.Add("鰐梨"); tbl.Rows.Add("鳳梨"); tbl.Rows.Add("檸檬"); tbl.Rows.Add("茘枝"); tbl.AcceptChanges(); return tbl; }
|