listItems在listview与空文本
-
12-12-2019 - |
题
我有一个旧的VB6程序,暂时没有改变,但现在有一个新的行为。我认为一个共同的组成部分是从它下面升级的。以下是细节。
我在小码模式下有一个标准ListView控件。代码片段:
'setup the listview
With lvwMap
.Appearance = ccFlat
.BackColor = vbBlack
.BorderStyle = ccNone
.Font.Name = "Arial"
.Font.Bold = True
.Font.Size = 9
.ForeColor = vbYellow
.LabelEdit = lvwManual
.LabelWrap = True
.OLEDropMode = ccOLEDropManual
.PictureAlignment = lvwTopLeft
.TextBackground = lvwOpaque
.View = lvwSmallIcon
End With
.
添加的大多数listItems都有一个小单音和标题(文本)。 TextBackground设置为不透明,这意味着文本在封闭彩色矩形中呈现。
某些项目虽然可能没有提供的标题,或者用户可以改变它,使得没有标题。这曾经很好,只有小小的显示。但现在具有空文本属性的任何ListItem都会呈现相当宽的封闭矩形,内部没有文本(好像用户键入一堆空格)。
添加ListItem的代码是直截了当的:
Set oLI = lvwMap.ListItems.Add(lvwMap.ListItems.Count + 1, Key:=sKey)
oLI.SmallIcon = sIcon
oLI.Text = sCaption
.
我在此处停止调试器,并在立即窗口中亮了以下内容:
oLI.Text= "AAAAAAA"
?oLI.Width
100.0063
oLI.Text= "AAAAAA"
?oLI.Width
91.99371
oLI.Text= "AAAAA"
?oLI.Width
84.0189
oLI.Text= "AAAA"
?oLI.Width
76.0063
oLI.Text= "AA"
?oLI.Width
60.0189
oLI.Text= "A"
?oLI.Width
52.0063
oLI.Text= ""
?oLI.Width
96.00001
.
您可以看到listItem.width正确重新计算,直到文本变为空,然后跳转到96像素。
有谁知道任何弥补这种行为的方法?一些Windows消息我可以用来配置默认的空WDITH?有关ListView行为更改的任何信息也可能有用。
解决方案
mscomctl.ocx是更新于4月份修复a IE中的安全漏洞 - 我猜这是当我的行为发生变化时,因为我拥有一个具有旧版本的文件(从2004年)这样的VM机器,那就是这种方式,我很确定是<一个href=“http://support.microsoft.com/kb/896559”rel=“nofollow”>最后一个版本在最近的一个。
至于该做什么:嗯,我猜这取决于它是关于它导致你的问题的原因。如果是因为您是使用项目的宽度属性,您可以轻松地将其乘以一个布尔评估,如下所示:iWidth = oLi.Width * Abs(oLi.Text <> "")
。但是,如果它是你不喜欢的外观,我唯一可以想到的是通过在/如果用户将其设置为空时添加单个空间来减轻效果。从使用点来看,如果启用标签编辑,新行为可能会更好,因为它提供了更广泛的区域来单击。