VB.NET 学习--(3)

sual Basic 语言概念演练:定义类

转载:http://www.cbcz.com/study/doc/200704142921.htm

 

此演练说明如何使用类模块定义类,然后从中创建对象。同时还说明如何为新类创建属性和方法,以及如何初始化对象。

定义类

  1. 通过在“文件”菜单上单击“新建”,然后单击“项目”,打开一个新的“Windows 应用程序”项目。将出现“新建项目”对话框。
  2. 从 Visual Basic 项目模板的列表中选择“Windows 应用程序”。将显示新项目。
  3. 在“项目”菜单中单击“添加类”,将一个新类添加到项目中。将出现“添加新项”对话框。
  4. 将新模块命名为 StateInfo.vb,然后单击“打开”。即会显示新类的代码:
    Public Class StateInfo
    End Class
    注意   可以使用 Visual Studio .NET 代码编辑器,在新类的名称之后键入 Class 关键字,将新类添加到启动窗体中。代码编辑器会提供相应的  End Class 语句。
  5. 若要简化对注册表类的访问,请在包含类语句的源代码顶部添加一条 Imports 语句:
    Imports Microsoft.Win32
  6. 在 Class 和 End Class 语句之间加入以下代码,为类定义三个私有字段:
       Private pVal As String ' Holds the LastFile property value.
       Private KeyName As String ' Holds the name of the registry key.
       Private SubKeyName As String ' Holds the name of the subkey.

    这三个字段被声明为 Private,只能在类的内部使用。可以通过使用提供更大访问权限的访问修饰符(如Public)来使字段得以从类的外部进行访问。

  7. 通过添加以下代码为类定义属性:
    Public Property LastFile() As String
       Get ' Retrieves the property value.
          Return pVal
       End Get
       Set(ByVal Value As String)
          pVal = Value
       End Set
    End Property
  8. 通过添加以下代码为类定义方法:
    Sub SaveStateInfo()
    '  Save the current value of the LastFile property to the registry.
       Dim aKey As RegistryKey
    '  Create a key if it does not exist.
       aKey = Registry.CurrentUser.CreateSubKey(KeyName)
    'CreateSubKey(subKey As String)打开一个现有的子项,或者新建一个新子项进行访问, 
    ‘ Registry 提供表示windows注册表中根项的Microsoft.Win32.RegisterKey对象
    '  Save the property value to the registry.
       aKey.SetValue(SubKeyName, pVal)
    End Sub
    
    Sub GetStateInfo()
    '  Restore the property value LastFile from the 
    '  value stored in the registry.
       Dim aKey As Object
       Dim myRegKey As RegistryKey = Registry.CurrentUser
       Try
    '  This call goes to the Catch block if the registry key is not set.
       myRegKey = myRegKey.OpenSubKey(KeyName)
          Dim oValue As Object = myRegKey.GetValue(SubKeyName)
             pVal = CStr(oValue)
       Catch
          pVal = "" ' Set to default if key value cannot be read.
       End Try
    End Sub
  9. 通过添加名为 Sub New 的过程为新类定义参数化的构造函数:
    Sub New(ByVal RegistryKeyName As String, _
            ByVal RegistrySubKeyName As String)
    '  Save the names of the registry key and subkey in two fields.
       KeyName = RegistryKeyName
       SubKeyName = RegistrySubKeyName
    '  Restore the value of the LastFile property from the registry.
       MyClass.GetStateInfo()
    End Sub

    当创建基于此类的对象时,会自动调用 Sub New 构造函数。此构造函数设置包含注册表项和子项名称的字段的值,并调用一个从注册表中恢复 LastFile 属性值的过程。

    注意   此演练使用注册表来存储类的状态信息。其他应用程序和用户也可以使用存储在注册表中的信息,因此,不应使用注册表来存储安全性信息或重要的应用程序信息。
  10. 通过添加名为 Finalize 的过程为类定义 Finalize 析构函数:
    Protected Overrides Sub Finalize()
    '  Save the value of the LastFile property to the registry
    '  when the class loses scope.
       SaveStateInfo()
       MyBase.Finalize() ' Call Finalize on the base class.
    End Sub

    在类失去范围后,析构函数 Finalize 将存储在属性中的值保存到注册表。

创建测试类的按钮

  1. 右击解决方案资源管理器中启动窗体的名称,将启动窗体更改为设计模式,然后单击“视图设计器”。默认情况下,“Windows 应用程序”项目的启动窗体的名称为 Form1.vb。将显示主窗体。
  2. 在主窗体中添加一个按钮,然后双击该按钮显示 Button1_Click 事件处理程序的代码。添加下列代码以调用测试过程:
    '  Create an instance of the class and pass the registry key
    '  names to the Sub New constructor.
       Dim SI As New StateInfo("Software\StateInfo", "PropertyValue")
    '  Display the value of the property if it has been restored.
       If Len(SI.LastFile) > 1 Then
          MsgBox("The value of the property LastFile is: " _
                 & SI.LastFile)
       Else
          MsgBox("The LastFile property has not been set.")
       End If
       SI.LastFile = "C:\BinaryFile.txt" ' Set the property.
    '  Ask the object to save the property value to the registry.
       SI.SaveStateInfo()

运行应用程序

  1. 按 F5 运行应用程序。将显示应用程序。
  2. 单击窗体上的按钮以调用测试过程。第一次进行此操作时,将显示一条消息,说明尚未设置 LastFile 属性。
  3. 单击“确定”消除该消息框。Button1_Click 过程设置 LastFile 属性值,并调用 SaveState 方法。即使没有在 Button1_Click 中显式调用 SaveState,也会在关闭启动窗体后通过 Finalize 方法自动调用它。
  4. 再一次单击该按钮。将显示消息“属性 LastFile 的值位于 C:\BinaryFile.txt”。
  5. 关闭主窗体,然后按 F5 键重新启动程序。创建了一个基于该类的对象,其 Sub New 构造函数调用GetStateInfo 过程,该过程从注册表中恢复属性值。单击该按钮后,将再次显示“The value of the property LastFile is C:\BinaryFile.txt”消息。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值