Comtl32.dll v6.0中的ListView执行多项选择(使用Shift键时),如下所示(x表示已选中)
00xxxx
xxxxxx
xxxx00早期版本的ListView按如下方式执行此操作:
00xx00
00xx00
00xx00有没有办法让它采用第一种方式( comctl32 v6.0方式)?
谢谢约翰
发布于 2010-12-08 14:18:15
简短的回答是不。,但因为这看起来不完整...
ListView不公开允许您更改其选择行为的API,正如Hans在他的评论中间接地指出的那样,要更改ListView控件的行为,唯一的方法是使用时间机器。ListView控件中内置了许多关于选择事件的独特行为,因此,即使您尝试由所有者绘制控件来修改选择行为的外观,您也会突然面临必须处理数量惊人的窗口消息的问题,这些消息可能会导致选择的更改。
同样值得指出的是,这个问题在完全不同的层面上是被误导的。如果您的应用程序的用户正在运行的Windows版本包含早于版本6.0的comctl32.dll,则这是他们在ListView控件之外所期望的行为。覆盖和更改它只会让他们感到困惑,因为它不会像在他们的计算机上找到的所有其他ListView控件一样工作。相比之下,如果应用程序的用户运行的Windows版本包含comctl32.dll v6或更高版本,则默认情况下,ListView控件将按照您所描述的那样运行。(您不应该因为完全相同的原因而想要更改它。)
https://stackoverflow.com/questions/4383918
复制相似问题