1回顶部 对于一个Visual Basic程序员来说,创建的每一个应用程序都是胖客户端的。Web开发从来不是VB的目的,VB专注于开发具有Windows用户界面的单机或C/S结构应用程序,使得VB语言和其窗体引擎得到紧密的结合。在VB6中没有必要区分语言和创建界面的工具,但是在.NET中却是非常有必要的。 在VB.NET中,创建"标准"windows 应用程序的技术是.NET框架的一部分,在任何其它.NET语言中也都可以实现,这是和原先有着巨大改变的。在以下几个部分中,在详细讨论VB.NET中新的窗体技术如何工作。 2回顶部 在这个区域里,你会看到几个关键的元素: 一个窗体的构造器(constructor)(a Sub New()) 一个释放(Dispose)程序 窗体中所有控件的声明 一个名为InitializeComponent的子程序 构造器和释放程序与VB6中的Class_Initialize和Class_Terminate事件基本等效。设计器所产生的代码的实质是其他两部分-控件声明的列表和InitializeComponent程序。看一下创建这个简单的例子所产生的代码。如下: 'NOTE: The following procedure 从上面的代码中的12到15行,你可以看到是用来设置按钮的大小等属性。 假若你增加一些你自己的代码,即使是一些简单的代码,将会产生意想不到的结果。 在这儿,我们只增加一行简单的代码如下: ' 3回顶部 产生的结果如下图 因此除了构造器内的代码,你最好不要直接修改它,而是尽量通过可视化界面来改变其属性。 .NET中的事件处理机制 在vb6中,事件处理程序关联到相应的对象上完全依赖于处理程序的名字。在.NET中怎么关联一个特定的事件处理程序到一个对象的事件呢? 1、使用WithEvents和Hadles关键字 这是Windows窗体设计器默认使用的模型。控件的对象在声明的时候用WithEvents关键字来表示,事件处理程序在程序声明后提供一个Handles 对象名.事件 子句。 通过这两个部分Handels和WithEvents,把对象的事件和事件处理程序关联起来。让我们回到第一个例子上来,看一下设计器是如何把按钮的点击事件和相应的代码处理程序联合起来的。让我们看一下按钮本身定义中的第一行代码: Friend WithEvents Button1 按钮在声明的时候使用了WithEvent关键字。双击Button1,窗体设计器会为默认的点击事件自动产生一个新的事件处理程序。设计器产生的程序在末尾添加了Handles Button1.Click的声明(如下所示) Private Sub Button1_Click( _ 至此,虽然语法可能有点区别,但是总体思路是和VB6中的事件处理机制是基本相同的。不过使用WithEvents和Handles可以实现一些新的特点。例如你可以指定一个特定的事件处理程序处理多个事件。你可以在窗体中创建第二个按钮,然后双击它,产生的第二个事件处理程序如下: Private Sub Button2_Click( _ 同样你也可以修改Button1的事件处理程序中的Handles属性如下: Private Sub Button1_Click( _ 4回顶部 现在,无论点击哪个按钮,会执行同样的处理程序。同样通过在多个处理程序的Handles子句中指定同一个事件,一个事件也可以对应多个处理程序: Private Sub ClickEvent1( _
Private Sub CheckBox1_CheckedChanged( _ 缺少控件数组 对于VB6开发者来说,在VB.NET中感觉很不方便的一点是缺少了控件数组。有什么办法来实现与控件数组相同的效果呢?从上文的.net中的事件处理机制我们知道,在.net中允许多个对象的事件使用同一个事件处理程序,那么结合一个标准数组就不难实现控件数组的效果了。 下面是一个简单的例子。 1.创建一个新的VB.NET Windows 应用程序。 5回顶部 2.在窗体上放置五个radio button,并在窗体上增加一个label。 3.双击一个radio button,会转到它的CheckedChanged事件处理程序,修改 Handles子句以包含其他四个的CheckedChanged事件。 Private Sub RadioButton1_CheckedChanged( _ 4.创建一个radio buttons的数组作为一个私有成员变量:Dim radioButtons(4) As RadioButton 5.创建一个整形私有变量:Dim selectedOption As Integer = 0 6.在窗体构造器代码中增加代码以把这些radio button填充到数组中 Public Sub New() 7.在刚才的CheckedChanged程序中加入如下代码: Private Sub RadioButton1_CheckedChanged( _ 编译运行这个程序,你会发现每次选择不同的radio button的时候,在label中显示相应的序号。是不是和控件数组一样的效果? 6回顶部 设置你的窗体的大小改变 在VB6中我每次改变窗体的大小,都不得不在窗体的Resize 事件中编写代码。在vb.net中有许多特点可以让你不写一行代码就可以改变控件的大小。下面我们将了解三种新特点和面板的使用,通过结合使用他们可以增强你的控件管理的灵活程度。 Docking属性 这个属性可以被设置为Top,Bottom,Left,Right或Fill。可以使控件紧挨指定的视窗边缘,或者紧挨已放置到相应视窗边缘的其他控件。设置Dock属性为Fill可以使控件调整为充满视窗的整个客户区。 Anchor属性 Anchor属性可以被设定为Top,Bottom,Left和Right的任何组合。这可以保持控件的top-left角与视窗边框具有相同的相对位置。设置Anchor属性为Top and Bottom可以垂直地调整控件,保证从视窗底部到控件底部距离相同。 7回顶部 AutoScrolling 窗体 AutoScroll特性,允许用户改变窗体的大小,而不改变控件的大小,改变窗体大小的时候会出现滑动条。 没有默认的窗体实例的编程 类和对象虽然在VB6中也存在,但是远远没有像在.NET中一样对象无处不在。对于VB6开发者来说,最常碰见的一个问题就是在.NET中缺乏默认的窗体实例。 VB 6 允许代码直接访问尚未实例化的窗体类;然而VB .NET 却规定在访问任何类之前都要进行实例化,而且必须借助实例来访问类。VB 6能自动生成每个窗体的默认实例,从而允许直接通过窗体名称来访问窗体,可以直接用代码 "Form2.Show" 显示 Form2 的默认实例;然而在 VB .NET 中,这么做只会引发错误,因为 Visual Basic .NET 既不会创建默认的窗体实例,也不允许直接访问尚未实例化的窗体类。 你只有先创建窗体实例,然后才可以显示窗体外观、访问窗体属性及其控件。在 VB 6 等早期版本中,多个窗体之间的交互通常需要借助默认窗体实例来完成。在 .NET 下实现多窗体交互,进行 .NET 窗体编程时应该牢牢把握下列原则:在访问窗体之前,你必须进行窗体实例化;如果在项目中有多处代码访问同一窗体,则你必须把它的同一实例指针传递给这些代码。 总结 以上总体描述了在VB.NET中新的Windows客户端开发的模型,以下几点比较重要: Windows窗体是一个新的窗体模型,与VB6的窗体模型相比,有更多新特点。 在.net中查看所有你创建和设置你的用户界面的代码,有时可以编辑。 在.NET中事件处理机制不在基于事件处理程序的名字,而是利用Handles关键字。 由于新增的docking(停靠)和anchoring(锚定)属性,窗体布局比在VB6中更强大了。 在VB .NET中没有默认的窗体实例。 |
闂傚倸鍊搁崐鎼佸磹瀹勬噴褰掑炊椤掆偓杩濋梺閫炲苯澧撮柡灞剧〒閳ь剨缍嗛崑鍛暦瀹€鍕厸鐎光偓閳ь剟宕伴弽顓溾偓浣糕槈濡嘲鐗氶梺鍛婂姉閸嬫挸袙婢跺绻嗛柣鎰典簻閳ь剚鍨垮畷鏇㈠蓟閵夈儱鐎梺绉嗗嫷娈旈柦鍐枛閺岋綁寮崶銉㈠亾閳ь剟鏌涚€n偅灏柍钘夘槸閳诲秹顢樿缁ㄥジ鏌熸笟鍨鐎规洘鍎奸ˇ顕€鏌¢埀顒勬嚍閵夛絼绨婚梺鍝勬川閸嬬偤藟閻愮儤鍊垫慨妯煎亾鐎氾拷闂傚倸鍊搁崐鎼佸磹妞嬪海鐭嗗〒姘e亾妤犵偞鐗犻、鏇㈠Χ閸℃ぞ绮℃俊鐐€栭崝褏绮婚幋鐘差棜闁秆勵殕閻撴洟鏌熼柇锕€鐏遍柛銈咁儔閺屻倝寮堕幐搴′淮闂佸搫鏈粙鎴﹀煡婢跺ň鏋庨柟閭﹀枤閳诲繒绱撻崒姘偓椋庢媼閺屻儱鐤鹃柣妯款嚙閽冪喖鏌i弮鍌楁嫛闁轰礁绉电换婵囩節閸屾碍鐏撻梺鍝勬-閸樺ジ鈥旈崘顔嘉ч柛鎰╁妼婵兘姊洪悷鏉挎闁瑰嚖鎷�>>
正在阅读:如何在VB.NET中创建Windows应用程序如何在VB.NET中创建Windows应用程序
2005-08-31 10:03
出处:
责任编辑:moningfeng