• 主页
  • VBS
  • .NET技术
  • VBA
  • VB网络编程
  • VB多媒体
  • VB数据库
  • VB控件
  • VB COM/DCOM
  • VB基础类
  • VB API
Triumph 2018年03月01日
关于 ListBox 的 DrawItem 问题,不知是 BUG 还是我操作的方式不对?
我用的是 Visual Studio Community 2017 版,目前更新到了 11.5.7 ,OS 为 Win10。

新建一个 VB 的【Windows 窗体应用】,拖入一个 ListBox,将 DrawMode 改为 OwnerDrawFixed ,在 Items 中随便输入些内容,然后在代码中写:
	Private Sub ListBox1_DrawItem(sender As Object, e As DrawItemEventArgs) Handles ListBox1.DrawItem

Dim bg As Brush = Brushes.White
Dim fColor As Brush = Brushes.Black

If e.State And DrawItemState.Selected = DrawItemState.Selected Then
bg = Brushes.Black
fColor = Brushes.White
End If

e.Graphics.FillRectangle(bg, e.Bounds)
e.Graphics.DrawString(ListBox1.Items(e.Index), Me.Font, fColor, e.Bounds)

End Sub


代码很简单,就是画 Item 的背景和字符,根据选择状态换颜色。

运行后绘制正常,选择不同的项时颜色切换都正常:



然后在窗体中拖入一个按钮,其它什么都不变,直接运行,诡异的事情发生了:

全部绘制为选中状态的样子!!!


为了验证是哪里出的问题,我先换到另一台 VS 和 OS 版本都和上面相同的电脑上,结果也一样;然后换成新建一个 C# 的【Windows 窗体应用】,操作步骤相同,除了代码是 C# 格式,其它的都一样,运行后都正常,没有出现问题。看来只是在 VB 下才有这样的结果。

不知道是 BUG 还是我操作的方式不对?哪位遇到过这种情况?

...全文
392 点赞 收藏 2
写回复
2 条回复

还没有回复,快来抢沙发~

发动态
发帖子
VB
创建于2007-09-28

1.1w+

社区成员

11.0w+

社区内容

VB技术相关讨论
社区公告
暂无公告