使用 HScrollBar 和 VScrollBar 控件
水平、垂直滚动条控件不同于 Windows 中内部的滚动条或 Visual Basic 中那些附加在文本框、列表框、组合框或 MDI 窗体上的滚动条。无论何时,只要应用程序或控件所包含的信息超过当前窗口(或者在 ScrollBars 属性被设置成 True 时的文本框和 MDI 窗体)所能显示的信息,那些滚动条就会自动出现。在较早的 Visual Basic 版本中,通常用滚动条作为输入设备。但目前的 Windows 界面指南则建议用滑块取代滚动条作为输入设备。Visual Basic 专业版和企业版都包括 Windows 95 的滑块控件。滚动条在 Visual Basic 中仍然有价值,因为它为那些不能自动支持滚动的应用程序和控件提供了滚动功能。关于使用滚动条的信息,请参阅“Scroll Bar 控件方案:创建可滚动的图形视口”。Scroll Bar 控件如何工作
滚动条控件用 Scroll 和 Change 事件监视滚动框(有时用拇指替代)沿滚动条的移动。事件 描述 
Change 在滚动框移动后发生。 
Scroll 在移动滚动框时发生。在单击滚动箭头或滚动条时不发生。 
可用 Scroll 事件访问滚动条被拖动后的数值。在释放滚动框或单击滚动条或滚动箭头时,Change 事件就会发生。Value 属性 
Value 属性(缺省值为 0)是一个整数,它对应于滚动框在滚动条中的位置。当滚动框位置在最小值时,它将移动到滚动条的最左端位置(水平滚动条)或顶端位置(垂直滚动条)。当滚动框在最大值时,它将移动到滚动条的最右端或底端位置。同样,滚动框取中间数值时将位于滚动条的中间位置。除了可用鼠标单击改变滚动条数值外,也可将滚动框沿滚动条拖动到任意位置。结果取决于滚动框的位置,但总是在用户所设置的 Min 和 Max 属性之间。注意 如果希望滚动条显示的信息从较大数值向较小数值变化,可将 Min 设置成大于 Max 的值。LargeChange 和 SmallChange 属性
为了指定滚动条中的移动量,对于单击滚动条的情况可用 LargeChange 属性,对于单击滚动条两端箭头的情况可用 SmallChange 属性。滚动条的 Value 属性增加或减少的长度是由 LargeChange 和 SmallChange 属性设置的数值。要设置滚动框在运行时的位置,可将 Value 属性设为 0 到 32,767 中的某个数值(包括 0 和 32,767)。

解决方案 »

  1.   

    使用 ListBox 控件
    ListBox 控件显示项目列表,用户可从中选择一个或多个项目。图7.32   ListBox 控件列表框为用户提供了选项的列表。虽然也可设置多列列表,但在缺省时将在单列列表中垂直显示选项。如果项目数目超过列表框可显示的数目,控件上将自动出现滚动条。这时用户可在列表中上、下、左、右滚动。图 7.36 所示为一个单列列表框。图7.33   单列列表框数据绑定特性
    Visual Basic 包含 ListBox 控件的标准版本 (ListBox) 和数据绑定版本 (DBList) 。虽然两种版本的控件都能显示、编辑和更新大多数标准类型数据库的信息,但是 DataList 提供了更高级的数据访问功能。DataList 控件还支持一套与标准 ListBox 控件不同的属性和方法。详细信息   请参阅“使用DataCombo 和 DataList 控件”以获得有关 Listbox 控件的数据绑定版本的详细信息。Click 和 Double-Click 事件对于列表框事件,特别是当列表框作为对话框的一部分出现时,建议添加一个命令按钮,并把该按钮同列表框并用。按钮的 Click 事件过程应该使用列表框的选项执行适于应用程序的操作。双击列表中的项目与先选定项目然后单击命令按钮,这两者应该具有相同的效果。为此,应在 ListBox 控件的 DblClick 过程中调用命令按钮的 Click 过程:Private Sub List1_DblClick ()
       Command1_Click
    End Sub也可将命令按钮的 Value 属性值设置为 True,这就将自动调用事件过程:Private Sub List1_DblClick ()
       Command1.Value = True
    End Sub这将为使用鼠标的用户提供快捷方式,同时也没有妨碍使用键盘的用户执行同样的操作。注意,没有与 DblClick 事件等价的键盘命令。向列表添加项目
    为了向列表框中添加项目,应使用 AddItem 方法,其语法如下:box.AddItem item[, index]参数 描述 
    box 列表框的名称。 
    item 添加到列表中的字符串表达式。若 item 是文字常数,则用引号将它括起来。 
    index 指定在列表中插入新项目的位置。index 为 0 表示第一个位置。若省略 index,则将项目插入在末尾(或按排序次序插入在适当的位置)。 
    通常在 Form_Load 事件过程中添加列表项目,但也可在任何时候使用 AddItem 方法添加项目,于是可动态(响应用户的操作)添加项目。下列代码将 "Germany"、"India"、"France" 和 "USA" 添加到名为 List1 的列表框中:Private Sub Form_Load ()
       List1.AddItem "Germany"
       List1.AddItem "India"
       List1.AddItem "France"
       List1.AddItem "USA"
    End Sub只要在运行时加载窗体就会出现如图 7.34 所示的列表。图 7.34   "Countries" 列表框在指定位置添加项目
    为了在指定位置添加项目,应对新项目指定索引值。例如,下行代码将 "Japan" 插入到第一个位置并把其它项目向下调整:List1.AddItem "Japan", 0注意,是 0 而不是 1 指定列表中的第一个位置(见图 7.38)。图 7.35   向列表添加项目设计时添加项目
    通过设置 ListBox 控件“属性”窗口的 List 属性还可在设计时向列表添加项目。在选定了 List 属性选项并单击向下箭头时,可输入列表项目并按 CTRL+ENTER 组合键换行。只能在列表末端添加项目。所以,如果要将列表按字母顺序排序,则应将 Sorted 属性设置成 True。关于详细的信息,请参阅下面“排序列表”。排序列表 
    可以指定要按字母顺序添加到列表中的项目,为此将 Sorted 属性设置为 True 并省略索引。排序时不区分大小写;因此单词 "japan" 和 "Japan" 将被同等对待。Sorted 属性设置为 True 后,使用带有 index 参数的 AddItem 方法可能会导致不可预料的非排序结果。从列表中删除项目 
    可用 RemoveItem 方法从列表框中删除项目。RemoveItem 有一参数 index,它指定删除的项目:box.RemoveItem indexbox 和 index 参数与 AddItem 中的参数相同。例如要删除列表中的第一个项目,可添加下行代码:List1.RemoveItem 0要删除连结版或标准版的列表、组合框中的所有项目,应使用 Clear 方法:List1.Clear通过 Text 属性获取列表内容 
    通常,获取当前选定项目值的最简单方法是使用 Text 属性。Text 属性总是对应用户在运行时选定的列表项目。例如,下列代码在用户从列表框中选定 "Canada" 时显示有关加拿大人口的信息:Private Sub List1_Click ()
       If List1.Text = "Canada" Then
          Text1.Text = "Canada has 24 million people."
       End If
    End SubText 属性包含当前在 List1 列表框中选定的项目。代码检查是否选定了 "Canada",若已选定,则在 Text 框中显示信息。用 List 属性访问列表项目
    可用 List 属性访问列表的全部项目。此属性包含一个数组,列表的每个项目都是数组的元素。每个项目以字符串形式表示。引用列表的项目时应使用如下语法:box.List(index)box 参数是列表框的引用,index 是项目的位置。顶端项目的索引为 0,接下来的项目索引为 1,依此类推。例如,下列语句在一个文本框中显示列表的第三个项目(index = 2):Text1.Text = List1.List(2)用 ListIndex 属性判断位置
    如果要了解列表中已选定项目的位置,则用 ListIndex 属性。此属性只在运行时可用,它设置或返回控件中当前选定项目的索引。设置列表框的 ListIndex 属性也将触发控件的 Click 事件。如果选定第一个(顶端)项目,则属性的值为 0,如果选定下一个项目,则属性的值为 1,依此类推。若未选定项目,则 ListIndex 值为 –1。注意 NewIndex 属性可用来跟踪添加到列表的最后一个项目的索引。在向排序列表插入项目时,这一点十分有用。使用 ListCount 属性返回项目数
    为了返回列表框中项目的数目,应使用 ListCount 属性。例如,下列语句用 ListCount 属性判断列表框中的项目数:Text1.Text = "You have " & List1.ListCount & " _
    entries listed"创建多列和多选项列表框
    可用 Columns 属性指定列表框中的列数目。此属性取值如下:值 描述 
    0 垂直滚动的单列列表框。 
    1 水平滚动的单列列表框。 
    >1 水平滚动的多列列表框。 
    如有必要,Visual Basic 可自动换行显示列表项目并为列表添加水平滚动条;若列表只填充在单列中则不添加滚动条。Visual Basic 可根据需要自动换列显示。注意,若列表框的项目比列宽度要宽,则会截去文本超出的部分。用户可从列表中选择多个项目。设置 MultiSelect 属性来处理标准列表框中的多项选择,MultiSelect 属性取值如下:值 选项类型 描述 
    0 无 标准列表框。 
    1 简单多项选择 单击或按 SPACEBAR 键选定列表中的附加项目,或撤消对附加项目所作的选定。 
    2 扩充的多项
    选择 可用 SHIFT+ 单击或 SHIFT+ 箭头键选定从上一个选定项到当前的选项之间的所有选项。CTRL+ 单击将选定(或撤消选定)列表中的项目。 
    详细信息 关于 Columns 和 MultiSelect 属性的详细信息,请参阅本章后面的“列表框控件方案 2:创建多列列表框”。
      

  2.   

    谢谢 dbcontrols(泰山__帮助你使我感到快乐.) 
      

  3.   

    注意 Topindex 属性的应用可实现自动滚动:简单问题:让LISTBOX控件自动滚动,自动换行!!!
    http://www.csdn.net/expert/TopicView.asp?id=383489'下面是 按钮向上下滚动 ListBox 的代码
    Option Explicit
    Private Sub Command1_Click()
    List1.TopIndex = List1.TopIndex + 1
    List1.Selected(List1.TopIndex + GetVisibleListCount(List1)) = True
    End Sub
    Private Sub Form_Load()
    Dim i As Long
    For i = 0 To 100
      List1.AddItem "asdas"
    Next i
    End Sub
    Public Function GetVisibleListCount(ListX As VB.ListBox) As Integer
    Dim FormX As VB.Form
    Set FormX = ListX.Container
    Dim FontX As New stdole.StdFont
    FontX.Bold = FormX.Font.Bold
    FontX.Charset = FormX.Font.Charset
    FontX.Italic = FormX.Font.Italic
    FontX.Name = FormX.Font.Name
    FontX.Size = FormX.Font.Size
    FontX.Underline = FormX.Font.Underline
    FontX.Weight = FormX.Font.Weight
    Set FormX.Font = ListX.Font
    GetVisibleListCount = (ListX.Height \ FormX.TextHeight("X")) - 1
    Set FormX.Font = FontX
    End Function'=================================
    'MSDN:
    Private Sub Form_Load ()
      Dim I  ' 声明变量。
      For I = 0 To Screen.FontCount -1  ' 填充列表框用
          List1.AddItem Screen.Fonts(I)  ' 屏幕字体的名字。
      Next I
    End SubPrivate Sub Form_Click ()
      Dim X  ' 声明变量。
      X = List1.TopIndex  ' 获得当前索引。
      List1.TopIndex = List1.TopIndex + 5  ' 复位最上面的项。
      If List1.TopIndex = X Then List1.TopIndex = 0
    End Sub