2015-09-08 55 views
0

所以我對如何解決我的問題的想法,但我需要更短的代碼如何更新每個列表視圖項的label.text選定使用循環

我一張有圖像列表列表視圖。

每次ListView項選擇的指數變化 label1.text也將發生變化或更新

這裏是我的代碼

if (listView1.Items[0].Selected == true) 
{ 
    label1.Text = "Number1"; 
} 
if (listView1.Items[1].Selected == true) 
{ 
    label1.Text = "Number2"; 
} 

我試着問是否有利用的循環,從而使代碼短的方式。

回答

2

如果您使用的是ListViewItemSelectionChanged事件,那麼你可以簡單地有:

private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) 
{ 
    label1.Text = e.Item.Text; 
} 

但如果ListView你會需要更復雜的代碼的MultiSelect屬性設置爲true

例如

private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) 
{ 
    if (listView1.SelectedItems.Count > 0) 
    { 
     label1.Text = listView1.SelectedItems[0]; 
    } 
} 

,如果你需要它的位置,您可以使用ListViewItemIndex財產。

0

要顯示所選擇的項目,你可以試試這個

foreach (ListViewItem selectedItem in listView1.SelectedItems) 
{ 
    label1.Text = selectedItem.Text; 
    break; // remove it if you have multiple selection but you need thread as well with Thread.Sleep. 
} 
//OR 
label1.Text = listView1.SelectedItems[0].Text; 

自定義文本

var count = 1; 
foreach (ListViewItem selectedItem in listView1.SelectedItems) 
{ 
    label1.Text = "Number" + count++; 
    break; // remove it if you have multiple selection but you need thread as well with Thread.Sleep. 
} 
0

你有兩個主要選擇,forforeachForeach可能更具可讀性,但是您沒有得到可用的索引,而for可讀性差,但有索引。

int i = 1; 
foreach (var item in listView1.Items) { 
    if (item.Selected == true) { 
     label1.Text = "Number" + i; 
    } 
    i++; 
} 

//OR DO THIS 

for (int i = 1; i <= listView1.Items.Length; i++) { 
    if (item.Selected == true) { 
     label1.Text = "Number" + i; 
    } 
} 
0

您也可以創建列表視圖中的隱藏列,這將是你的標籤文本,然後你可以做以下

你會提出,在foreach循環如;

foreach(ListViewItem item in ListView1) 
{ 
    label1.Text = item.HiddenField; 
} 
相關問題