|  | ■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;
 }
 
 |