我想用我存储在单独的System.Collections.Generics.List<CustomClass>
中的项填充多列System.Windows.Forms.ListView。我想避免将数据存储两次,一次存储在List<CustomClass>
中,一次存储为ListViewItem中的字符串。有没有办法让ListViewItem使用一些回调函数来获取要从Tag属性放入其列的文本,而不是使用其Text属性?
更新:我已经尝试了the OnDrawSubItem solution并且它有效,但我遇到了奇怪的窗口失效问题(ListView总是正确重绘,但对话框中的其他窗口不是)。但是,我找到了我要找的东西:ListView in "virtual mode"。它允许使用来自其他源的数据填充ListView,该源在修改源时自动更新。
答案 0 :(得分:1)
我不确定我的理解是什么意思,如果List<>
类型为string
,您只需将字符串添加到列表中,它们就会显示出来。
如果您的列表是一个类,那么您可以覆盖.ToString
方法。
修改强>
根据您的评论。您需要在单元格上进行自定义绘制。我认为OnDrawSubItem事件是你想要处理的事件。然后根据列ID(您将从DrawListViewSubItemEventArgs
获得,您可以设置文本。
答案 1 :(得分:1)
不,没有像这样的ListViewItem回调函数。您可以创建CustomListView,并覆盖OnDraw ...方法。