十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
一、组合框控件的主要属性:
新抚网站建设公司创新互联,新抚网站设计制作,有大型网站制作公司丰富经验。已为新抚成百上千家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的新抚做网站的公司定做!
列表框控件的大部分属性同样适合于组合框,此外,组合框还有一些自己的一些属性:
1、Style(类型)属性
组合框共有三种 Style :
当值为 0 ,组合框是“下拉式组合框”(DropDown Combo),与下拉式列表框相似,但不同的是,下拉式组合框可以通过输入文本的方法在表项中进行选择,可识别 Dropdown 、Click、Change 事件,
当值为 1 ,组合框称为“简单组合框”(Simple Combo),由可以输入文本的编辑区与一个标准列表框组成,可识别 Change 、DblClick 事件,
当值为 2 ,组合框称为“下拉式列表框”(Dropdown ListBox),它的右边有个箭头,可供“拉下”或“收起”操作。它不能识别 DblClick 及 Change 事件,但可识别 Dropdown 、Click 事件
综上所述,如果你想让用户能够输入项目,则应将组合框设置成 0 或 1 ,如果只想让用户对已有项目进行选择,则应将组合框设置成 2 。
2、Text(文本)属性:
本属性值返回用户选择的文本或直接在编辑区域输入的文本,可以在界面设置时直接输入
但要显示多个选项,不能简单地用 Text 属性指定,因为后一选项会覆盖前面的选项,这时,常常要用到窗体的载入事件。(Form_Load)
Form_Load 的意思是,在打开窗口的同时,将指定的内容载入。
二、组合框的事件:
根据组合框的类型,它们所响应的事件是不同的。
例如,当组合框的 Style 属性为 1 时,能接收 DblClick 事件,而其他两种组合框能够接收 Click 与 Dropdown 事件;当 Style 属性为 0 或 1 时,文本框可以接收 Change 事件。
三、组合框的方法:
跟列表框一样,组合框也适用 AddItem 、Clear 、RemoveItem 方法。
预先准备三个图标文件,用于树型控件中显示磁盘符号和文件夹的图像之用。
1、窗体上添加控件如下:
组合框控件 ComboBox1,树型控件 TreeView1,列表框控件 ListBox1,图像列表控件 ImageList1。
选中TreeView1,设置其ImageList属性为ImageList1。
2、设置属性
选中图像列表控件 ImageList1,在属性窗口里,选中属性Images,单击三个小点按钮,出现图像集合编辑器窗口,单击[添加按钮],一一把准备好的图标文件进行添加,注意先后次序,如果不符合要求可以通过上下移动按钮重新改变次序。完成后单击[确定]。
运行图如下:
完整代码如下:
Imports System.IO
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'添加系统所有磁盘目录符号
For Each MyDrive As String In Environment.GetLogicalDrives()
ComboBox1.Items.Add(MyDrive)
Next
'显示第一个磁盘符号
ComboBox1.Text = ComboBox1.Items(0)
End Sub
'递归过程添加目录树
Public Sub AddDirectory(ByVal strFatherPath As String, ByVal strPath As String, ByVal nodeFather As TreeNode)
Dim i As Integer
Dim Mynode As New TreeNode
'先添加本目录
Mynode.Text = Strings.Replace(strPath, strFatherPath "\", "", , 1)
'为节点指定未被选中时显示的图标
Mynode.ImageIndex = 1
'为节点指定被选中时显示的图标
Mynode.SelectedImageIndex = 2
nodeFather.Nodes.Add(Mynode)
Application.DoEvents()
Try
Dim str() As String = Directory.GetDirectories(strPath)
'递归遍历该目录的子文件夹
For i = 0 To str.GetUpperBound(0)
AddDirectory(strPath, str(i), Mynode)
Next
Catch ex As Exception
Debug.WriteLine(ex.Message)
End Try
Mynode = Nothing
End Sub
'根据给出的盘符添加目录树
Private Sub AddRootDirectory(ByVal DiscSymbol As String)
Dim Nynode As New TreeNode
'先把磁盘盘符添加到树中
TreeView1.Nodes.Clear()
Nynode.ImageIndex = 0
Nynode.Text = DiscSymbol
Nynode.SelectedImageIndex = -1
TreeView1.Nodes.Add(Nynode)
Dim i As Integer
'获取磁盘根目录下的文件夹
Dim str() As String = Directory.GetDirectories(DiscSymbol "\")
For i = 0 To str.GetUpperBound(0)
'调用递归过程遍历该文件夹里的所有子文件夹,并添加到树型控件
AddDirectory(DiscSymbol, str(i), Nynode)
Next
Nynode = Nothing
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
'根据磁盘符号的变更,显示根目录里的文件
ListBox1.Items.Clear()
For Each MyFile As String In System.IO.Directory.GetFiles(ComboBox1.Text)
ListBox1.Items.Add(MyFile)
Next
'根据磁盘符号的变更,重新显示目录树
Dim DiscSymbol As String
DiscSymbol = Microsoft.VisualBasic.Left(ComboBox1.Text, Len(ComboBox1.Text) - 1)
Call AddRootDirectory(DiscSymbol)
End Sub
'递归过程根据子目录寻找上级目录名--从而构成完整的目录路径
Private Sub AllPath(ByVal ThisNode As TreeNode, ByRef MyPathName As String)
If ThisNode.Level 1 Then
'该节点层数大于1,其父节点不是磁盘根目录
MyPathName = ThisNode.Parent.Text "\" MyPathName
Dim MyNode As TreeNode = ThisNode.Parent
Call AllPath(MyNode, MyPathName)
Else
'该节点层数等于1,其父节点就是磁盘根目录
MyPathName = ComboBox1.Text MyPathName
End If
End Sub
Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
'为了搜索选中的节点对应目录的文件,需要组成全路径
Dim MyAllPathName As String = TreeView1.SelectedNode.Text
Dim MyNode As TreeNode = TreeView1.SelectedNode
If TreeView1.SelectedNode.Level = 0 Then
'如果选中的是根节点
MyAllPathName = ComboBox1.Text
Else
'如果选中的是非根节点,调用递归过程组成全路径
Call AllPath(MyNode, MyAllPathName)
MyAllPathName = MyAllPathName "\"
End If
'根据路径,搜索文件名并显示
ListBox1.Items.Clear()
For Each MyFile As String In System.IO.Directory.GetFiles(MyAllPathName)
ListBox1.Items.Add(MyFile)
Next
End Sub
End Class
Combobox(组合框)控件相当于将文本框和列表框的功能结合在一起。这个控件可以实现输入文本来选定项目,也可以实现从列表中选定项目这两种选择项目的方法。如果项目数超过了组合框能够显示的项目数,控件上将自动出现滚动条。用户可以上下或左右滚动列表。
1.使用组合框和列表框
通常,组合框适用于建议性的选项列表,而当希望将输入限制在列表之内时,应使用列表框。组合框包含编辑区域,因此可将不在列表中的选项输入列区域中。此外,组合框节省了窗体的空间。只有单击组合框的向下箭头时(Style属性值为1的组合框除外,它总是处于下拉状态)才显示全部列表,所以无法容纳列表框的地方可以很容易地容纳组合框。
2.组合框的样式
此处有三种组合框样式。每种样式都可在设计时或运行时来设置,而且每种样式都使用数值或相应的Visual Basic常数来设置组合框的样式。
样式值常数:下拉式组合框值为0,Vb.net中的常数值为DropDown;简单组合框值为1,Vb.net中的常数值为Simple;下拉式列表框值为2,vb.net中的常数值为DropDownList。
3.下拉式组合框
在缺省设置(Style=0)下,组合框为下拉式。用户可象在文本框中一样直接输入文本,也可单击组合框右侧的附带箭头打开选项列表。选定某个选项后,将此选项插入到组合框顶端的文本部分中。当控件获得焦点时,也可按Alt+↓键打开列表
4.简单组合框
将组合框的Style属性设置为1,将指定一个简单的组合框,任何时候都在其内显示列表。为显示列表中所有项,必须将列表框绘制得足够大。当选项数超过可显示的限度时将自动插入一个垂直滚动条。用户可直接输入文本,也可从列表中选择。象下拉式组合框一样,简单组合框也允许用户输入那些不在列表中的选项。
5.下拉式组合框
下拉式组合框(Style=2)与正规列表框相似--它显示项目的列表,用户必须从中选择,但下拉式列表框与列表框不同之处在于,除非单击框右侧的箭头,否则不显示列表。
这种列表框与下拉式组合框的主要差别在于,用户不能在列表框中输入选项,而只能在列表中选择。当窗体上的空间较少时,可使用这种类型的列表框。
6.添加项目
为在组合框中添加项目,应使用Insert方法,其语法如下:
ComboboxName.Items.Insert(index As Integer,item As Object)
"comboboxName"为列表框或组合框名称,item为在列表中添加的字符串表达式,用引号括起来。Index用来指定新项目在列表中的插入位置。Index为0表示第一个位置。当在第一个位置时,也可以用语法:
combobox.Items.Add(item As Object)
通常在设计时或在New过程中添加列表项目,但也可在任何时候使用Insert方法。这样就能动态在列表中添加项目。以下代码将“Chardonnay”,“Fum Blanc”,“Gewztraminer”和“Zinfandel”放置到名为combobox1,Style属性为0(DropDown)的组合框中:
Public Sub New()
...
...
Combobox1.Items.Insert "Chardonnay"
Combobox1.Items.Insert "Fum Blanc"
Combobox1.Items.Insert "Gewztraminer"
Combobox1.Items.Insert "Zinfandel"
End Sub
7.设计时添加项目
在设计时,也可设置组合框控件“属性”窗口的Items属性,从而在列表中添加项目。选定Items属性并单击按钮后就可以输入列表项目,然后按回车键换到新的一行。
只能将项目添加到列表的末尾。所以,如果要将列表按字母顺序排序,则应将Sorted属性设置为True.
8.指定位置添加项目
为了在列表指定位置添加项目,应在新项目后指定索引值。例如,下行代码将"Piont Noir"插入到第一个位置并把其他项目的位置向下调整:
Combobox1.Items.Insert(0,"Pinot Noir")
注意:指定列表中的第一个位置的是0而不是1
9.排序列表
将Sorted属性设置为True并省略索引,则可在列表中指定按字母顺序添加的项目。排序时不区分大小写。将sorted属性设置为true后,Items.Insert方法将导致不可预料的非排序结果。
10.删除项目
可在组合框中用Items.Remove方法来删除项目。Items.Remove有一个参数index,它指定要删除的项目:combobox1.Items.Remove(index)及index参数和Items.Insert中的参数相同。例如,为了删除列表中的第一个项目,应添加下面一行代码:
combobox1.Items.Remove(0)
若要删除所有列表项目,就使用Clear方法:
combobox1.Clear
11.用Text属性获取列表内容
获取当前选项目值的最简单的常用方法就是使用Text属性。在运行时无论向控件的文本框部分输入了什么文本,Text属性都与这个文本相对应。它可以是选定的列表选项,或者是用户在文本框中输入的字符串。例如,如果用户选定列表框中的“chardonnay”,则通过下列代码显示有关“chardonnay”的信息:
Private Sub Combobox1_click(Byval sender As Object,Byval e As System.EventArgs)
If Combobox1.Text="Chardonnay" Then
Textbox1.Text="Chardonnay is a midium-bodied white wine."
End If
End Sub
其中Text属性包含Combobox1列表框中当前选定的项目。代码查看是否选择了“Chardonnay”,若是如此,则在文本框中显示信息。
12.用Items属性访问列表选项
有了Items属性就可访问列表中所有项目,该属性包含一个数组,而且列表中的每个项目都是数组的元素。每一项都表示为字符串的形式。为了引用列表中的项目,应使用如下语法:
ComboboxName.Items(index)
ComboboxName为组合框名称,而index是项目的位置。顶端项目的索引为0,下一个项目的索引为1,依次类推。例如,在文本框中,以下语句显示列表中的第三个项目(index=2):
Text1.Text=CStr(Combobox1.Items(2))
13.用SelectIndex属性判断位置
想要知道组合框列表中选定项目位置,可以由SelectIndex属性得到。该属性设置或返回控件中当前选定项目的索引值,而且只在运行时有效。对组合框的SelectIndex属性进行设置时也会触发控件的Click事件。若选定第一个(项端)项目,则属性值为0;选定的下一个项目属性值为1,依次类推。如果未选定项目,或者用户在组合框中输入选项(样式0或1)而不在列表中选择现有的项目,则SelectIndex为-1。
14.Items.Count属性返回项目数
为了返回组合框中的项目数,应使用Items.Count属性。例如,下列语句用Items.Count属性判断组合框中的项目数:
TextBox1.Text="You have"Combobox1."Items.Count""_entries listed"
Private Sub b_click(sender As Object, e As EventArgs)
MsgBox(sender.name)
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim b() As Button = {Button1, Button2, Button3}
For Each i In b
AddHandler i.Click, AddressOf b_click
Next
End Sub