关键是要在刷新时也看不见。

解决方案 »

  1.   

    简单点的方法是,用picturebox之类的控件将滚动条挡住
      

  2.   

    也可以用子类处理,在接收到任何关于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
      

  3.   

    还有一种方法是用SetWindowRgn设置listbox的显示区域,这个和用控件遮挡原理是一样的
      

  4.   

    实际是想做这样一个东东:分左、中、右三栏的一个列表框最左面的是数字序号,根据实际最大项目数以0填充,宽度等长,总是从1开始,如:001右面的一栏是显示时间的,但是向右对齐!中间一栏才是实际显示的标题,是可以多选的样式。而且根据实际运行的情况,可能需要动态的在最左面再显示一复选框栏。在这里,效率是第一考虑的,比较下来ListBox的效率比ListView高多了,所以选用ListBox一个方案是使用4个ListBox组合起来,(其中一个是隐藏的Check样式)当然就不能出现4个滚动条啦难题:1、如何在4个列表框上出现一整条的带虚线的高亮条呢?2、如何在4个列表框内出现一幅完整统一的背景图呢?3、如何保持各列表框之间的位置同步呢?
    (经实践发现,ListBox 在单击某一条目后,再滚动鼠标滚轮时,虽然当前控件的条目滚动了,
    但不会触发任何VB内部滚动事件Scroll,所以会造成各列表框之间的位置不同步)4、由于Check样式的特殊,其每个项目的高度与一般样式的列表框不同(在字体大小相同的情况下)所以,如何保持一般样式的ListBox与Check样式的位置同步呢?