listview在activex组件中使用时表现不同

时间:2010-11-04 16:05:37

标签: c# .net listview activex

我正在使用c#.net 2.0开发一个activeX图像编辑器

我使用listview控件来显示缩略图。 通常,如果使用Shift键选择多个项目,则会选择所选项目和单击项目之间的整个范围。但是当用作activeX时,它会在选定和单击的项目之间选择矩形画布中的项目。

我无法添加图片,所以我会这样说明:)

选择第二项,然后按住Shift键点击7.

这就是我需要的:

X XXX
XXX
X

这是发生的事情:

X XX X
X的 XX X

粗体x:已选中。

该组件用于基于.net的应用程序。也可以在web应用中作为activex对象。 我希望列表视图在每个位置都表现相同。 有什么想法吗?

PS:.net ver 2.0

1 个答案:

答案 0 :(得分:2)

用'activex'可能意味着什么并不清楚。如果这意味着您的组件正在另一个,非.NET程序中使用,那么这有一个解释。由.NET ListView类包装的本机ListView控件的代码存储在comctl32.dll中。该DLL有两个版本,一个在c:\ windows \ system32,另一个在Windows并排缓存中(c:\ windows \ winsxs \ etc ...)

system32中的版本是旧版程序使用的旧版本。使用并排版本需要程序告诉Windows它要使用最新版本,而不是旧版本。这些版本的行为不一样,在选择项目的方式上看到不同的行为当然可以解释。

您受此程序告诉Windows的限制。这通常通过包含清单来完成,但这不是一个现实的选择。当它获得一个从未测试过的comctl32.dll版本时,它很可能会破坏该程序。编程方式是CreateActCtx(),您必须在创建ListView控件之前对其进行pinvoke。这个API函数不是很容易使用。请考虑是否确实要使列表视图的行为与此程序可能使用的任何其他列表视图的行为不同。