`
Anddy
  • 浏览: 197989 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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”消息。

 

分享到:
评论

相关推荐

    VB.NET---计算器---源代码

    总的来说,这个VB.NET计算器项目提供了一个基础的实践平台,让学习者能够探索GUI编程、事件驱动设计模式以及VB.NET中的计算逻辑实现。无论是对于初学者还是有一定经验的开发者,它都是一个有价值的参考资料,有助于...

    VB.NET学习--( 8 )

    【VB.NET学习--( 8 )】 VB.NET是Visual Basic的.NET版本,是Microsoft开发的一种面向对象的编程语言,基于.NET Framework运行环境。在VB.NET中,你可以利用强大的IDE(集成开发环境)和丰富的类库来创建各种类型的...

    VB.NET---汉诺塔算法演示

    这个程序演示了如何用VB.NET实现汉诺塔的解决方案。VB.NET是一种基于.NET框架的面向对象编程语言,由微软公司开发,常用于创建Windows桌面应用程序。 汉诺塔问题的基本设定是:有三个柱子,分别标记为A、B、C,柱子...

    ASP.NET动态网页设计案例教程VB.NET版-江红-素材

    3. **控件**:介绍ASP.NET中的服务器控件,如Button、TextBox、Label等,以及如何通过VB.NET代码操作它们。此外,也可能涉及HTML控件和用户自定义控件的使用。 4. **数据绑定**:讲解如何使用ASP.NET的数据绑定机制...

    VB.NET 源码--商品销售管理系统

    【VB.NET 源码--商品销售管理系统】是一款基于Visual Basic .NET开发的高效能、易操作的商品进销存管理软件。...通过深入理解和使用该系统,开发者不仅可以学习到VB.NET的实际应用,还能掌握进销存管理的实践知识。

    vb.net课件-龚沛曾.

    总的来说,这个VB.NET的课件系列全面地覆盖了VB.NET编程的关键方面,从基础语法到高级特性,为学习者提供了一个系统的学习路径。通过深入学习这些章节,开发者不仅能掌握VB.NET的编程技能,还能理解.NET Framework的...

    vb.net 源码-C#- DBhelper

    VB.NET提供了丰富的语法结构,支持事件驱动编程,易于学习,并且能与.NET Framework的所有功能无缝集成。对于初学者来说,VB.NET的语法相对直观,使其成为入门编程的好选择。 C#(读作"C Sharp")是另一种.NET框架...

    VB.NET 学习---( 7 )

    本知识点我们将深入探讨VB.NET的学习,特别是在第7阶段的学习重点。 在VB.NET的学习过程中,开发者通常会从基础语法开始,包括变量声明、数据类型、运算符、流程控制语句(如if...else、for...next、while等)以及...

    VB.NET object-oriented.rar_VB .net_net_vb.net_vb.net excel

    VB.NET是一种基于.NET Framework的编程语言,由微软公司开发,主要用于构建Windows桌面应用...在"VB.NET面向对象的实现"这个主题中,读者可以期待学习到如何在实际项目中应用这些概念,以及解决相关问题的策略和技巧。

    VB.NET-多功能-滚动字幕

    通过学习这个VB.NET滚动字幕的代码,开发者不仅可以掌握字幕滚动的实现技巧,还能深入理解.NET框架的事件驱动编程模型、UI设计原则以及控件的使用。同时,这也是一个很好的实践案例,帮助提升VB.NET的编程能力和软件...

    VB.NET.rar_.net 教程_VB.net教程_Visual Basic.Net_vb.net_vb.net 实例

    《VB.NET教程——Visual Basic .NET深度学习指南》 Visual Basic .NET(简称VB.NET)是微软公司推出的面向对象的编程语言,它是.NET框架的一部分,为开发者提供了强大的开发工具和丰富的功能,尤其适合快速应用程序...

    VB.NET--Supermap5.2.rar_supermap5.2_vb.net

    在VB.NET环境中,SuperMap 5.2是一个强大的地理信息系统(GIS)开发平台,它为开发者提供了丰富的GIS功能,使得创建地图应用变得简单易行。本教程主要关注如何利用VB.NET与SuperMap 5.2的接口进行集成开发,以实现...

    VB.NET-ico图标转换.zip

    - 学习这个源码可以帮助初学者理解如何在VB.NET中操作图像资源,以及如何利用Windows API进行更深入的操作。 - 通过阅读和修改源码,开发者可以增强对.NET Framework图形编程的理解,并扩展其技能集。 总之,“VB...

    VB-Net自学经典PPT教程(完整版),vb.net学习,VBA

    理解对象导向编程(OOP)概念,如封装、继承和多态性,也是VB.NET学习的重要部分。此外,熟悉.NET Framework的类库和服务,以及如何使用Visual Studio作为集成开发环境(IDE)进行项目开发,也是必不可少的步骤。 ...

    VB.NET-gao-ji-jiao-cheng.rar_VB.NET 高级教程_VB.net教程_vb.net

    3. **LINQ(Language Integrated Query,语言集成查询)**:VB.NET中的LINQ允许你以一种直观的方式处理数据,无论是数据库、XML文档还是内存中的对象。通过使用LINQ,可以简化查询并提高代码可读性。 4. **异步编程...

    新VB.NET源代码2023-11-18-16-40QZQ.zip

    VB.NET是一种基于.NET框架的编程语言,由微软公司开发,它是Visual Basic的现代版本...如果你正在学习VB.NET或者对这个项目感兴趣,可以通过IDE打开压缩包中的文件,逐步理解代码的结构和逻辑,从而提升你的编程技能。

    VB.NET-Thread-Pooling.rar_vb.net 线程

    描述中的“vb.net 线程的一个实例(使用与初学者参考使用)”意味着这个压缩包的内容适合那些刚开始学习VB.NET线程编程的人。实例代码通常会提供清晰的步骤和注释,帮助初学者理解线程池的工作原理和如何在实际项目...

    基于vb.net的modbus上位机通信协议代码(RTU模式)

    Modbus是一种广泛应用于工业自动化领域的通信协议,它允许设备之间进行简单、有效的数据交换。在VB.NET中实现Modbus通信,通常涉及到...通过学习和理解这些代码,可以进一步掌握如何在VB.NET环境下实现Modbus RTU通信。

    VB.Net2010VB6转VB.Net(高清视频+源码).zip

    总的来说,"VB.Net 2010 VB6 转 VB.Net" 的学习资源对于那些希望从 VB6 过渡到 VB.Net 开发的程序员来说非常有价值。通过观看高清视频教程,结合实际的源码练习,能够快速掌握 VB.Net 的核心概念和实践技巧。同时,...

    VB.NET - Framework - Using the COM Port in VB.NET

    在VB.NET中,通过.NET Framework提供的System.IO.Ports命名空间,我们可以方便地访问和操作这些端口。 首先,让我们深入理解COM端口的基本概念。COM端口是一种物理接口,如RS-232标准,允许数据以比特流的形式逐位...

Global site tag (gtag.js) - Google Analytics