我在listbox中显示的文字,是一条一条显示的,如果这条记录太长,后面的就显示不出来了,竖向滚动是可以自动的,为什么横向的不可以了呢??
设置colums属性达不到效果

解决方案 »

  1.   

    我一直想,如果就用listbox本生的属性没有办法解决。
    我提两个建议。
    一、用listview代替listbox
    二、用listbox时,向屏幕向送一行字。
    就像金山词霸一样。用一个API:SendMessage
    定义如下:
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
      

  2.   

    谢谢,可是我用listview没法使用additem属性,我想动态地用它来显示数据信息的
      

  3.   

    Option Explicit 
         
        Private Declare Function SendMessage Lib "user32" _ 
         Alias "SendMessageA" (ByVal hwnd As Long, _ 
         ByVal wMsg As Long, ByVal wParam As Long, _ 
         lParam As Any) As Long 
         
        Private Const LB_SETHORIZONTALEXTENT = &H194 
         
        Private Sub Command1_Click() 
         List1.AddItem "Line 1" 
         List1.AddItem "a big Line 2 some text some text" 
         List1.AddItem "Line 3" 
         addHorScrlBarListBox List1 
        End Sub 
         
        Public Sub addHorScrlBarListBox(ByVal refControlListBox As Object) 
         ' 加横向滚动条 
         
         Dim nRet As Long 
         Dim nNewWidth As Integer 
         
         nNewWidth = refControlListBox.Width + 100 ' 新宽度,以像素为单位。 
         nRet = SendMessage(refControlListBox.hwnd, _ 
         LB_SETHORIZONTALEXTENT, nNewWidth, ByVal 0&) 
        End Sub 
      

  4.   

    VB 的 ListBox 并沒有水平滚动轴的功能, 如果遇到某一个资料很长时,使用者就无法看完这一个资料的所有內容。 
    可利用 SendMessage 传送 LB_SETHORIZONTALEXTENT 信息给 ListBox, 作用就是要求 ListBox 设定水平滚动轴,其操作如下: 1. 申明API
    Const LB_SETHORIZONTALEXTENT = &H194 
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long 
    注意:如果以上的宣告放在「一般模块」底下,应在 Const 之前加上 Public 保留字, 并且将Declare 之前的 Private 保留字去掉。 2. 程序举例:
    ' List1 为 ListBox 的名称 
    Call SendMessage(List1.hwnd, LB_SETHORIZONTALEXTENT, 水平滚动轴的宽度, ByVal 0&) 
    特別注意:以上的水平滚动轴宽度的单位是 pixel(像素)。
      

  5.   

    在窗口上加入一个listview
    命名为:ListView1
    在改几个属性(在控件上按右键,点属性):
    1、“查看”改为“3-lvwreport”
    2、“标签编辑”改为“1-LvwManual”
    3、在“整行选择”和“网格行”前打勾
    完成以后,点属性面的“列首”,再点“插入列”(点两次,我们实验用)
    这些完成以后,我们就可以写程序了。加入一个按钮,命名为“Command1”
    以下是程序:
    Private Sub Command1_Click()
        Dim ItemX As ListItem
        Dim i As Integer
        For i = 1 To 10
            Set ItemX = ListView1.ListItems.Add(, , "这是第" & i & "行第1列")
            ItemX.ListSubItems.Add , , "这是第" & i & "行第2列"
        Next i
    End Sub
    '其中的道理自己领悟,有什么问题,发:[email protected]
      

  6.   

    我用API:SendMessage的方法解决,就是不能动态地控制滚动宽度,用listview控件也许可以代替,我再试试,谢谢楼上几位我用到的程序如下
    'list显示时间
    Private Sub Displays(ins As String, Optional t As String)
    Call SendMessage(List1.hwnd, LB_SETHORIZONTALEXTENT, 5000, ByVal 0&)If t = "" Then
        Me.List1.AddItem "   " & Date & " " & Time & "  " & ins
    Else
        Me.List1.AddItem "   " & Date & " " & Time & "  " & ins
    End If
    If Me.List1.ListCount > Val(Me.TextCount.Text) Then
        Me.List1.RemoveItem (0)
    End If
    End Sub