2013-11-26 249 views
1

我有一個listview1與每個行上的複選框,我想通過選中時檢查項目到一個listview2。複選框列表視圖

  private void Listview1_ItemChecked(object sender, ItemCheckedEventArgs e) 
    { 
     foreach (ListViewItem Item in listView1.Items) 
     { 
      if (Item != null) 
      { 
       ListViewItem li; 
       if (Item.Checked == true) 
       { 
        li = listView2.Items.Add(listView2.Items[0].ToString()); 
        li.SubItems.Add(listView2.Items[1].ToString()); 
        li.SubItems.Add(listView2.Items[2].ToString()); 
        li.SubItems.Add(listView2.Items[3].ToString()); 
        li.SubItems.Add(listView2.Items[4].ToString()); 
        li.SubItems.Add(listView2.Items[5].ToString()); 
        li.SubItems.Add(listView2.Items[6].ToString()); 
        li.SubItems.Add(listView2.Items[7].ToString()); 
        li.SubItems.Add(listView2.Items[8].ToString()); 
        li.SubItems.Add(listView2.Items[9].ToString()); 

       } 
      } 
     } 

    } 
+1

你在這個面臨的問題是什麼? – Cris

+0

選中時,項目不會傳遞到listview2。 – user3012159

回答

0

嘗試Clone()方法,這都將在同一檢查項目添加從listView1listView2

foreach (ListViewItem Item in listView1.Items) { 
    if (Item.Checked) { 
     listView2.Items.Add((ListViewItem)Item.Clone()); 
    } 
} 

如果你想刪除選中的項目從listView1你可以試試這個:

for(int i = listView1.Items.Count-1; i >= 0; i--){ 
    var item = listView1.Items[i]; 
    if(item.Checked) { 
     listView1.Items.Remove(item); 
     listView2.Items.Add(item); 
    } 
} 

如果您想將選中的項目添加到listView2僅當它在012中被選中時,試試這個:

private void Listview1_ItemChecked(object sender, ItemCheckedEventArgs e) 
{ 
    if(e.Item.Checked){ 
     listView1.Items.Remove(e.Item); 
     listView2.Items.Add(e.Item);  
    } 
} 

更新:要註冊Listview1_ItemChecked處理程序listView1.ItemChecked事件,試試這個代碼(放置在您的形式構造函數):

public Form1(){ 
    InitializeComponent(); 
    listView1.ItemChecked += Listview1_ItemChecked; 
} 
+0

我想如果(e.item.checked)因爲看起來像我想做的事情......但它不工作。我在同一個表格中都有列表視圖。我沒有看到項目傳遞...我不知道我在做什麼錯...我希望我不是在這裏金髮... – user3012159

+0

@ user3012159我提供了3個代碼片段,你能告訴我哪一個不工作?我希望沒有任何例外。 –

+0

我正在使用最後一個代碼片段,代碼看起來正確..但是當我在代碼中添加斷點並進行調試時,它對應用程序甚至在檢查時甚至不會查看該代碼段。我不知道我做錯了什麼。 – user3012159

0

您可以在LINQ

嘗試
var checkedItems = (from ListViewItem item in listView1.Items select item != null && item.Checked == true).ToList(); 
listview2.DataSource = checkedItems; //if using data basic asp.net data bind 
listview2.DataBind();