簡體   English   中英

如何為使用循環選擇的每個列表視圖項更新label.text

[英]How to update a label.text for each listview item selected using looping

所以我對如何解決我的問題有一個想法,但我需要較短的代碼

我有與imagelist的listview。

每次listview項目選擇索引更改label1.text也會更改或更新

這是我的代碼

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

我試圖問是否有一種利用循環使代碼簡短的方法。

如果您正在使用ListViewItemSelectionChanged事件,則可以簡單地擁有:

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

但是,如果ListViewMultiSelect屬性設置為true則將需要更復雜的代碼。

例如

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

如果需要它的位置,可以使用ListViewItemIndex屬性。

要顯示所選項目,您可以嘗試此操作

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.
}

您有兩個主要選擇, forforeach Foreach可能更具可讀性,但您沒有索引可使用,而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;
    }
}

您還可以在列表視圖上創建一個隱藏的列,這將是您的標簽文本,然后可以執行以下操作

您可以將其放在foreach循環中,例如;

foreach(ListViewItem item in ListView1)
{
   label1.Text = item.HiddenField;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM