2013-01-23 137 views
3

我正在使用LVN_GETEMPTYMARKUP在我的ListCtrl中显示一些文本,直到它获得一些内容。我面临的问题是我似乎无法找到一种方法来刷新此文本并有效地强制ListCtrl不止一次地发送此通知。请求刷新LVN_GETEMPTYMARKUP

有没有办法告诉ListCtrl刷新“标记”?

+1

你将不得不再次清空。 –

+0

好的,但是如果它在一段时间内一直空着,我想根据应用的状态触发两条消息呢?基本上,我的列表从来没有任何项目开始。我应该插入一个虚拟并立即清除?听起来像是应该做的。 – wpfwannabe

+1

FWIW,即使清除了我的控件中的项目后,我再也不会收到LVN_GETEMPTYMARKUP查询。它似乎无限期地缓存... – EricLaw

回答

3

我看了看源代码,看来listview控件只发送一次LVN_GETEMPTYMARKUP查询并缓存结果。

因此,我相信获得您要查找的行为的唯一方法是根据需要重新创建控件。

1

那么这是一个相当古老的线程,但我遇到了这一点,并会为任何来到像我这样的地方的任何人提供一个答案。

可以通过向列表视图发送LVM_RESETEMPTYTEXT =(LVM_FIRST + 84)消息或通过获取IListView接口并执行ResetEmptyText方法,将LVN_GETEMPTYMARKUP消息重新发送到列表视图。通过这种方式,你可以有条件地改变或清除空的文本:)