繁体   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