Visual Basic.NET+SQL Server全程指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

实例2-4 枚举类型实例

该实例实现步骤如下。

1 创建窗体

在本章的项目chapter2中,用鼠标右键单击解决方案资源管理器中项目名下面对应节的文件夹“数据类型”,在弹出的快捷菜单中选择“添加”→“Windows窗体”菜单命令,在弹出的对话框中输入窗体名EnFrm,单击“添加”按钮,完成窗体的创建。

2 添加控件

在窗体上添加一个listbox控件,用来改变背景颜色。

添加一个textbox控件到Form窗体上,用于接收用户输入,将listbox背景改成指定的颜色。

添加一个Label控件用于说明。

3 添加代码

在窗体类中添加代码2-6中的代码。

代码中将7个颜色变量定义为枚举类型,并定义一个方法来判断其中的值以便修改listbox控件的背景颜色。

代码2-6 EnFrm.vb

        01  Public Class EnFrm
        02      Public Enum color '定义枚举类型
        03          red
        04          orange
        05          yellow
        06          green
        07          blue
        08          indigo
        09          purple
        10      End Enum
        11      Private Function backcolor(ByVal c As color)
        12          Select Case c
        13              Case color.red '红色
        14                  Me.ListBox1.BackColor = Drawing.Color.Red
        15              Case color.orange '橙色
        16                  Me.ListBox1.BackColor = Drawing.Color.Orange
        17              Case color.yellow '黄色
        18                  Me.ListBox1.BackColor = Drawing.Color.Yellow
        19              Case color.green '绿色
        20                  Me.ListBox1.BackColor = Drawing.Color.Green
        21              Case color.blue '蓝色
        22                  Me.ListBox1.BackColor = Drawing.Color.Blue
        23              Case color.indigo '靛
        24                  Me.ListBox1.BackColor = Drawing.Color.Indigo
        25              Case color.purple '紫色
        26                  Me.ListBox1.BackColor = Drawing.Color.Purple
        27          End Select
        28      End Function
        29      Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal
    e As System.EventArgs) Handles TextBox1.TextChanged
        30          Select Case Me.TextBox1.Text
        31              Case Is = "红色"
        32                  backcolor(color.red)
        33              Case Is = "橙色"
        34                  backcolor(color.orange)
        35              Case Is = "黄色"
        36                  backcolor(color.yellow)
        37              Case Is = "绿色"
        38                  backcolor(color.green)
        39              Case Is = "蓝色"
        40                  backcolor(color.blue)
        41              Case Is = "靛"
        42                  backcolor(color.indigo)
        43              Case Is = "紫色"
        44                  backcolor(color.purple)
        45          End Select
        46      End Sub
        47  End Class

代码2-6的执行步骤如下:

① 第2行到第10行代码定义一个枚举类型color,包含7个颜色变量;

② 第11行到第28行代码定义了一个backcolor()方法,用于判断方法参数,根据参数的不同,使listbox控件显示不同的背景颜色;

③ 第30行到第45行代码是判断用户输入的颜色,调用并指定backcolor ()方法的参数,显示相应的背景色。

4 运行结果

按F5键,运行该程序,结果如图2-9所示。

图2-9 实例2-4运行结果

2.1.5 结构类型

结构与类相似,但有差异。首先,类为引用类型,而结构为值类型;其次,结构使用Structure关键字来创建。

Structure语句只能在模块、命名空间或文件级出现。这就是说可以在源文件或模块、接口或类内部声明结构,但不能在过程内部进行声明。也可以在一个结构中定义另一个结构,但不能通过外部结构访问内部结构的成员,而必须声明一个内部结构的数据类型变量。

如果Option Strict值是On,则在每一个成员声明中还必须包含As子句。用Dim声明的成员默认为Public访问,未用As子句声明的成员默认为Object数据类型。

结构成员的作用范围是整个结构。

不能将结构的任何数据成员的值初始化,而必须通过结构上参数化的构造函数初始化数据成员,或者在创建了该结构的实例后将值赋给实例的成员。

结构支持的许多功能与类支持的一样。如结构可以拥有属性和方法,可以实现接口,也可以拥有参数化的构造函数。但是,在某些地方(如继承、声明和用法)结构和类之间存在着差异。

1.结构类型的声明

VB.NET中使用Structure语句作为结构声明的开始,并使用End Structure语句作为结构声明的结束。在这两条语句之间必须至少声明一个成员,还可以在结构中定义Function过程、属性和事件,如代码2-7所示的语句,在结构addstruct中,定义了三个整型变量a,b,c,还定义了一个Sub过程add,用来计算a加b的值并赋给c,再显示c的值。

代码2-7结构类型

        Structure addstruct
            Dim a As Integer
            Dim b As Integer
            Dim c As Integer
            Sub add(ByVal a, ByVal b)
                c = a + b
                MessageBox.Show(c)
            End Sub
        End Structure

2.结构类型的使用

结构类型的使用和类一样,先声明一个变量为结构类型,然后再用New关键字实例化,或者直接声明并实例化。

使用结构中的成员,格式如下:

结构变量.结构字段或方法

如代码2-8所示语句在一个按钮的单击事件中使用代码2-7中的结构addstruct,并调用该结构中的方法add。

代码2-8使用结构

        Private  Sub  Button1_Click(ByVal  sender  As  System.Object,  ByVal  e  As
    System.EventArgs) Handles Button1.Click
            Dim a As addstruct
            a = New addstruct
            a.add(10, 30)
        End Sub

3.结构类型举例

下面以实例说明结构类型的使用。