Listview selectedItem

时间:2012-01-25 13:11:04

标签: c# list listview

如何使用ListView的{​​{1}}事件?我有ItemSelectionChanged,而后者有8列;并且每行的第一列包含行的Id,这就是我所追求的。

我需要这个,因为Id用于从列表中选择信息。此列表填充ListView,但不显示所有信息。未显示的信息将显示在ListView中,当然,它应显示RichTextBox中所选项目的信息。当然,Id是相同的,但无论我尝试什么,我似乎无法达到这个价值。

到目前为止我的代码:

ListView

这适用于foreach ([ClassName] x in [List]) { if (x.id == Convert.ToInt32(myListView.FocusedItem.Text)) { rtbxSpecific.Text = x.name; } } 中的第一个对象,但不适用于抛出NullReferenceException的任何内容。为什么会这样?这就像事件发生一样,但除了第一个项目之外,它不知道列表中的任何其他项目。

我也尝试使用ListViewselectedItems[0].Text,但它基本上是同一个错误。这真让我感到烦恼,如果有人可以解释为什么它适用于第一个selectedItems[0].SubItems[0].Text,而不是以下内容,我会非常感激。

我甚至尝试在列表中使用ListViewItem

Find(...)

但没有骰子,这让我相信它现在正在讨厌的[Class] cl = [List].Find(delegate([Class] q) {return q.id == Convert.ToInt32(myListView.FocusedItem.SubItems[0].Text);}); 并且我没有得到这个。我想,FocusedItem方法使用起来会更干净,但是现在我对两者都有同样的错误。

1 个答案:

答案 0 :(得分:1)

简单检查所选的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];
        }
    }
}