要创建多列列表框,有必要设置列表框的 Columns 属性。
如果绘制的列表框大到可在一列中容纳所有项目,则第二列为空列;只有在列表框长度不够时,其它的项目才换行显示并自动添加水平滚动条。那么请问,有没有办法在代码中控制在第一列未满时,就要第二列添加数据?

解决方案 »

  1.   

    Option Explicit'首先 工程 部件中 加载  Microsoft Forms 2.0 Object Library
    '然后,在窗体上画一个 Microsoft Forms 2.0 Object Library控件组中的combobox
    Private Sub ComboBox1_Click()
        ComboBox1.Text = ComboBox1.List(ComboBox1.ListIndex, 1)
    End SubPrivate Sub Form_Load()
        ComboBox1.ColumnCount = 2
        ComboBox1.ListWidth = "6 cm"
        ComboBox1.ColumnWidths = "3 cm;3 cm"
        Dim i As Long
        For i = 0 To 1000
            ComboBox1.AddItem "num " + CStr(i)
            ComboBox1.List(i, 1) = "test " + CStr(i)
        Next
    End Sub
      

  2.   

    谢了,不过我要的是listBox 中用代码控制它换行显示。效果大致如下:aaaa        aaaaa
    bbbb        bbbbbb
    cccc        cccc
                dddddd
                eeee即第一列还未显示满,就在第二列显示余下的数据。
      

  3.   

    做两个 ListBox,设置不同的列数,重叠放置。其中一个 Visuable = False。
    每次更新时同时清空和填充二者。再根据填充循环所得的列表项数决定显示哪一个。例如:
    n = 0
    List1.Clear
    List2.Clear
    List1.Visual = True
    List2.Visual = False
    Do Until rs.EOF
      List1.AddItem rs.Fields(1)
      List2.AddItem rs.Fields(1)
      n = n + 1
      If n > MaxItemInColumn Then 
        List1.Visual = False
        List2.Visual = True
      End If
      rs.MoveNext
    Loop
      

  4.   

    谢谢,不过楼上的还不是我想要的答案。
    我的想法是listBox可能不止两列,而每一列的数据量可能也不一样,这些都是动态的。
    而且要求全部都可以看见,而不是用visible属性来控制它的显示。
      

  5.   

    //谢了,不过我要的是listBox 中用代码控制它换行显示。效果大致如下
    Option Explicit
    '首先 工程 部件中 加载  Microsoft Forms 2.0 Object Library
    '然后,在窗体上画一个 Microsoft Forms 2.0 Object Library控件组中的comboboxPrivate Sub ComboBox1_Click()
        ComboBox1.Text = ComboBox1.List(ComboBox1.ListIndex, 1)
    End SubPrivate Sub Form_Load()
        ComboBox1.ColumnCount = 2
        ComboBox1.ListWidth = "6 cm"
        ComboBox1.ColumnWidths = "3 cm;3 cm"
        Dim i As Long
        ComboBox1.AddItem "aaaa"
        i = ComboBox1.ListCount - 1
        ComboBox1.List(i, 1) = "aaaaa"
        ComboBox1.AddItem "bbbb"
        i = ComboBox1.ListCount - 1
        ComboBox1.List(i, 1) = "bbbbb"
        ComboBox1.AddItem "cccc"
        i = ComboBox1.ListCount - 1
        ComboBox1.List(i, 1) = "cccccc"
        ComboBox1.AddItem ""
        i = ComboBox1.ListCount - 1
        ComboBox1.List(i, 1) = "ddddddd"
        ComboBox1.AddItem ""
        i = ComboBox1.ListCount - 1
        ComboBox1.List(i, 1) = "eeeeee"
    End Sub
      

  6.   

    汗,现在才看清楚是listbox:Option Explicit
    '首先 工程 部件中 加载  Microsoft Forms 2.0 Object Library
    '然后,在窗体上画一个 Microsoft Forms 2.0 Object Library控件组中的listboxPrivate Sub Form_Load()
        ListBox1.ColumnCount = 2
        ListBox1.ListWidth = "6 cm"
        ListBox1.ColumnWidths = "3 cm;3 cm"
        Dim i As Long
        ListBox1.AddItem "aaaa"
        i = ListBox1.ListCount - 1
        ListBox1.List(i, 1) = "aaaaa"
        ListBox1.AddItem "bbbb"
        i = ListBox1.ListCount - 1
        ListBox1.List(i, 1) = "bbbbb"
        ListBox1.AddItem "cccc"
        i = ListBox1.ListCount - 1
        ListBox1.List(i, 1) = "cccccc"
        ListBox1.AddItem ""
        i = ListBox1.ListCount - 1
        ListBox1.List(i, 1) = "ddddddd"
        ListBox1.AddItem ""
        i = ListBox1.ListCount - 1
        ListBox1.List(i, 1) = "eeeeee"
    End Sub
      

  7.   

    ListBox主要用于单列显示
    对于多列显示,最好用ListView控件