VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 用VB.NET做WinForm的应用程序
发表评论(0)作者:不详, 平台:VB6.0+Win98, 阅读:11205, 日期:2001-11-02
用VB.NET做WinForm的应用程序

马金虎 

在VB.NET程序设计中,设计Windows的窗体已经完全变了样。在.Net FrameWork中,任一个Windows窗体都是通过继承名称空间中System.Windows.Forms中的一个叫Form类而产生的。用VB.NET做一个WinForm(Windows Form即Windows 窗体)应用程序对于用VB.NET的程序员来说一个基本的,也是最重要的。应用本文就是通过一些例子,循序渐进的介绍用VB.NET做Windows 应用程序的基本要点。这些要点就是:创建一个窗体、为窗体增加组件、编写响应事件。在程序中使用了面向对象的分析方法来设计WinFrom。


一. 程序设计及运行环境

(1).视窗2000专业版本

(2)..Net FrameWork SDK Beta 2


二. 创建第一个VB.NET的窗体

VB.NET的程序员可以利用.Net FrameWork的基本类型库,非常方便、快捷的创建一个

Windows的应用程序。在System.Windows.Forms名称空间中提供了你需要创建一个Windows Form应用程序的所有类型。你可以通过继承System.Windows.Forms.Form类,来建立一个WindowsForm。下面代码的作用就是通过继承System.Windows.Forms.Form来建立一个名字为Form1的类:

Public Class Form1 : Inherits System.Windows.Forms.Form

End Class




请注意如果你把Inherits关键字部分放在另外一行,你就不需要在类的名字和

Inherits关键字中间加上冒号,具体如下:

Public Class Form1

Inherits System.Windows.Forms.Form

End Class




在本文中一般定义了二个Sub,分别为New( ),InitializeComponent()。其中第一

个是一个构造器,当你用NEW关键字继承了一个对象,此Class中的一个构造器就会被调用。在此构造器中,通常是写一些初始化的代码。如果你的初始化代码有很多行,你可以建立一个PrivateSub来管理这些代码,这就是--InitializeComponent()。

下面就是第一个Form的源程序(form1.vb)和运行后的界面:

Imports System.Windows.Forms

Imports System.ComponentModel

Public Class Form1

Inherits System.Windows.Forms.Form

Public Sub New ( )

InitializeComponent( )

End Sub


Private Sub InitializeComponent( )

Me.Text = "第一个空的窗体!"

Me.Width = 400

Me.Height = 300

End Sub

End Class


Module Module1

Sub Main ( )

Application.Run ( new Form1 ( ) )

End sub

End Module




通过以下编译命令就可以得到一个Windows Form可执行文件。

Vbc /t:winexe /r:system.dll /r:system.windows.forms.dll form1.vb







这只是一个没有任何组件的空的窗体,只有加入组件的窗体才是用途的,接下来的就介绍如何在窗体上加入组件。


三.在窗体上加入组件(form2.vb):

在.Net FrameWork的基本类型库中提供了很多可以常用的组件。在窗体中加入组件一般需要以下三个步骤:

(1).定义一个组件变量

(2).获得一个组件的实例并初始化

(3).在窗体上加入组件

在程序中应注意以下几点:

(1).由于在VB.NET中,每个变量都有着不同的范围。所有在什么地点声明变量就显得比较重要。譬如在一个函数中声明的变量只能在此函数中使用。如果你想在整个Class中使用某个变量,就在Class的基本声明。

(2).得到一个组件的实例和获得一个对象的实例相似。使用了NEW关键字,你就获得了一个组件的的实例,就可以加入到Form中。但是你不能直接加入到Form中,因为在Form类中没有加入组件的方法。但是Form类可以继承Control类中的Controls属性。在Form类中,可以使用这个属性得到窗体中的System.Windows.Forms.Form.ControlCollection对象。在Form.ControlCollection类中描述了所有可以在窗体中使用的组件。你可以使用其中的Add和Remove方法在窗体中加入或者是删除组件。

在理解了上面的知识以后,我们就试图来在窗体上加入一个按钮和一个文本框。

以下就是源程序代码(Form2.vb)和程序运行后的界面

Imports System.Drawing

Imports System.Windows.Forms

Imports System.ComponentModel

Imports System


Public Class Form1

Inherits Form


注释: 定义一个按钮和文本框

Private Button1 As Button

Private TextBox1 As TextBox


Public Sub New()

InitializeComponent ( )

End Sub


Private Sub InitializeComponent()

Me.Text = "在窗体上加入组件!"

Me.Width = 400

Me.Height = 300


Button1 = New Button ( )

TextBox1 = New TextBox ( )


Button1.Left = 200

Button1.Top = 200

Button1.Width = 100

Button1.Height = 40

Button1.TabIndex = 0

Button1.Text = "确定"


TextBox1.Left = 200

TextBox1.Top = 30

TextBox1.Width = 150

TextBox1.Height = 40


Me.Controls.Add ( Button1 )

Me.Controls.Add ( TextBox1 )

End Sub

End Class


Module Module1

Sub Main ( )

Application.Run ( new Form1 ( ) )

End sub

End Module




通过以下编译命令编译后,运行界面如下:

Vbc /t:winexe /r:system.dll /r:system.windows.forms.dll form2.vb




图02:加入了一个按钮和一个文本框的窗体



四.添加了事件的窗体(form3.vb):

VB.NET的上一个版本是VB,他准确的说不是一个完全的面向对象的编程语言,而是一个面向事件的编程语言。在VB中,编写响应事件的程序是一件非常容易的事情。例如:如果你已经创建了一个按钮叫Button1,你要编响应点击此按钮的事件,你所要做的全部工作就是创建一个叫Button1_Click的事件过程。(实际上VB的IDE已经替你做了这些)。在VB.NET中也是如此,在设计模式下,你建立一个组件,你就可以通过点击此组件告诉Visual Studio .Net你想要写什么样事件处理过程。但在本节,我们将告诉你如何手动完成这些,这样将会有助于你理解在VB.NET中事件是如何工作的。

如果你想要一个对象响应事件,那么在声明他的时候要带上关键字WithEvents。例如,如果你想在程序中编写一个按钮的事件,在声明的时候用:

Private WithEvents Button1 As Button


代替:

接着你还有为对象要响应的事件创建事件过程。例如,对一个Button1,要编写单击(Click)过程,你就需要创建Button1_Click,具体如下:

Private Sub Button1_Click(ByVal sender As Object, _

ByVal e As System.EventArgs) Handles Button1.Click

注释:在此写事件处理代码

End Sub


Form类和所有组件的类都继承了Control类中的事件。在.Net FrameWork中的手册中,System.Windows.Forms.Control中共定义了大约58个事件,像:Click,DoubleClick, GotFocus, LostFocus, KeyUp等等。

以下就是在窗体中定义了Button1的Click和GotFocus事件的例子。

源程序代码(form3.vb),及运行后的界面

Imports System.Drawing

Imports System.Windows.Forms

Imports System.ComponentModel

Imports System


Public Class Form1

Inherits Form

Private WithEvents Button1 As Button

Private TextBox1 As TextBox


Public Sub New()

InitializeComponent ( )

End Sub


Private Sub InitializeComponent ( )

Me.Text = "处理事件的窗体!"

Me.Width = 400

Me.Height = 300


Button1 = New Button ( )

TextBox1 = New TextBox ( )


Button1.Left = 200

Button1.Top = 200

Button1.Width = 100

Button1.Height = 40

Button1.TabIndex = 0

Button1.Text = "按钮"


TextBox1.Left = 200

TextBox1.Top = 30

TextBox1.Width = 150

TextBox1.Height = 40


Me.Controls.Add ( Button1 )

Me.Controls.Add ( TextBox1 )



End Sub


Private Sub Button1_Click ( ByVal senderAs Object , _

ByVal e As System.EventArgs ) Handles Button1.Click

TextBox1.Text = "单击按钮!"


End Sub


Private Sub Button1_GotFocus ( ByVal senderAs Object, _

ByVal e As System.EventArgs ) Handles Button1.GotFocus

TextBox1.Text = "按钮获得了焦点!"


End Sub

End Class


Module Module1

Sub Main ( )

Application.Run ( new Form1 ( ) )

End sub

End Module




在用以下命令编译文件,运行后得到以下界面:




图03:按钮获得焦点时的运行界面





图04:点击按钮时的运行界面



五.总结

至此我们已经完成了用VB.NET做一个完整的Windows应用程序的全部过程,虽然结构上相对简单,但都比较具有代表性,可以触类旁通,在此基础上创建出结构更复杂、功能更完备的Windows应用程序。