也可以用子类处理,在接收到任何关于listbox的消息后(最好区别对待一下,一些不会引起listbox刷新的消息,可以不用处理)都用ShowScrollBar hwnd, SB_BOTH, False隐藏滚动条: Public Function wndproc(ByVal hwnd As Long, ByVal Msg As Long, _ ByVal wParam As Long, ByVal lParam As Long) As Long ShowScrollBar hwnd, SB_BOTH, False '將之送往原來的Window Procedure wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam) End Function
Public Function wndproc(ByVal hwnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
ShowScrollBar hwnd, SB_BOTH, False
'將之送往原來的Window Procedure
wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End Function
(经实践发现,ListBox 在单击某一条目后,再滚动鼠标滚轮时,虽然当前控件的条目滚动了,
但不会触发任何VB内部滚动事件Scroll,所以会造成各列表框之间的位置不同步)4、由于Check样式的特殊,其每个项目的高度与一般样式的列表框不同(在字体大小相同的情况下)所以,如何保持一般样式的ListBox与Check样式的位置同步呢?