是否可以使ListView显示通过其ListViewItem.Tag获得的文本?

时间:2010-04-19 08:27:53

标签: .net winforms listview

我想用我存储在单独的System.Collections.Generics.List<CustomClass>中的项填充多列System.Windows.Forms.ListView。我想避免将数据存储两次,一次存储在List<CustomClass>中,一次存储为ListViewItem中的字符串。有没有办法让ListViewItem使用一些回调函数来获取要从Tag属性放入其列的文本,而不是使用其Text属性?

更新:我已经尝试了the OnDrawSubItem solution并且它有效,但我遇到了奇怪的窗口失效问题(ListView总是正确重绘,但对话框中的其他窗口不是)。但是,我找到了我要找的东西:ListView in "virtual mode"。它允许使用来自其他源的数据填充ListView,该源在修改源时自动更新。

2 个答案:

答案 0 :(得分:1)

我不确定我的理解是什么意思,如果List<>类型为string,您只需将字符串添加到列表中,它们就会显示出来。

如果您的列表是一个类,那么您可以覆盖.ToString方法。

修改

根据您的评论。您需要在单元格上进行自定义绘制。我认为OnDrawSubItem事件是你想要处理的事件。然后根据列ID(您将从DrawListViewSubItemEventArgs获得,您可以设置文本。

答案 1 :(得分:1)

不,没有像这样的ListViewItem回调函数。您可以创建CustomListView,并覆盖OnDraw ...方法。