连接对象到listViewItem

本文关键字:listViewItem 对象 连接 | 更新日期: 2023-09-27 18:10:01

我有一些对象的概述,显示在一个listView
当一个对象被选中时,我想要显示一个包含关于被选中项目的更多细节的表单。

public lessonForm(lesson foo)
[get and display data]

[…)

lessonListView.ItemActivate += lessonSelected;
void lessonSelected(object sender, eventArgs e)
{
    lesson ??? = //REQUESTION MAGIC here.
    new lessonForm(???).Show();
}

由于listViewItem实际上只是文本,而不是通过编程连接到用于创建它们的课程对象,因此我还没有找到一种合适的方法来为每个listViewItem找到相应的课程对象。
当然可以

lesson ??? = Program.listOfAllLessons.Find((candidate) => {
    return candidate.plainTextName == selectedItem.Text //abbrev. on purpose
});

然而,我认为这是无可争议的,这只是一个可怕的代码,在不止一个层面上。
基本上:
我希望listViewItem有一个

obj underlyingObject;

字段允许方便地访问由listViewItem表示的对象。
是否存在允许这样做的功能?

连接对象到listViewItem

在创建ListViewItem时可以使用Tag属性来存储相关对象。由于Tag是object类型,因此在读取时需要适当地转换它。