列表视图selectedItem
本文关键字:selectedItem 视图 列表 | 更新日期: 2023-09-27 18:21:28
如何使用ListView
的ItemSelectionChanged
事件?我有一个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].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
现在很糟糕,我不会有任何进展。我想Find(...)
方法使用起来会更干净,但现在两者都出现了相同的错误。
简单检查所选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];
}
}
}