列表视图selectedItem

本文关键字:selectedItem 视图 列表 | 更新日期: 2023-09-27 18:21:28

如何使用ListViewItemSelectionChanged事件?我有一个ListView,它依次有8列;每行的第一列都包含该行的Id,这就是我想要的。

我需要这个,因为Id将用于从列表中选择信息。这个列表是填充ListView的内容,但它并没有显示所有信息。未显示的信息将显示在RichTextBox中,当然,它应该在ListView中显示所选项目的信息。当然,Id是一样的,但无论我做什么,我似乎都达不到那个值。

到目前为止我的代码:

foreach ([ClassName] x in [List])
{
    if (x.id == Convert.ToInt32(myListView.FocusedItem.Text))
    {
        rtbxSpecific.Text = x.name;
    }
}

这对于ListView中的第一个对象非常有效,但对于以下抛出NullReferenceException的任何对象都无效。为什么会发生这种情况?这就像事件启动一样,但除了第一个项目外,它不知道列表中的任何其他项目。

我也尝试过使用selectedItems[0].TextselectedItems[0].SubItems[0].Text,但基本上都是相同的错误。这真的很烦人,如果有人能解释为什么它适用于第一个ListViewItem,但不适用于以下内容,我将非常感谢。

我甚至尝试使用列表中的Find(...)与:

[Class] cl = [List].Find(delegate([Class] q) {return q.id == Convert.ToInt32(myListView.FocusedItem.SubItems[0].Text);});

但没有骰子,这让我相信FocusedItem现在很糟糕,我不会有任何进展。我想Find(...)方法使用起来会更干净,但现在两者都出现了相同的错误。

列表视图selectedItem

简单检查所选item.count是否大于0。

if (myListView.SelectedItems.Count > 0)
{
    foreach ([Class] cl in [List])
    {
        if (myListView.SelectedItems[0].SubItems[0].Text == cl.[Field].ToString())
        {
            RichTextBox.Text = cl.[Field];
        }
    }
}