如何在VB.NET中创建Windows应用程序之二 |
作者:苦丁 发文时间:2005.07.27 |
![]() |
对于VB6开发者来说,在VB.NET中感觉很不方便的一点是缺少了控件数组。有什么办法来实现与控件数组相同的效果呢?从上文的.net中的事件处理机制我们知道,在.net中允许多个对象的事件使用同一个事件处理程序,那么结合一个标准数组就不难实现控件数组的效果了。 下面是一个简单的例子。 1.创建一个新的VB.NET Windows 应用程序。 2.在窗体上放置五个radio button,并在窗体上增加一个label。 3.双击一个radio button,会转到它的CheckedChanged事件处理程序,修改 Handles子句以包含其他四个的CheckedChanged事件。
4.创建一个radio buttons的数组作为一个私有成员变量:Dim radioButtons(4) As RadioButton 5.创建一个整形私有变量:Dim selectedOption As Integer = 0 6.在窗体构造器代码中增加代码以把这些radio button填充到数组中
7.在刚才的CheckedChanged程序中加入如下代码:
编译运行这个程序,你会发现每次选择不同的radio button的时候,在label中显示相应的序号。是不是和控件数组一样的效果? 设置你的窗体的大小改变 在VB6中我每次改变窗体的大小,都不得不在窗体的Resize 事件中编写代码。在vb.net中有许多特点可以让你不写一行代码就可以改变控件的大小。下面我们将了解三种新特点和面板的使用,通过结合使用他们可以增强你的控件管理的灵活程度。 Docking属性 这个属性可以被设置为Top,Bottom,Left,Right或Fill。可以使控件紧挨指定的视窗边缘,或者紧挨已放置到相应视窗边缘的其他控件。设置Dock属性为Fill可以使控件调整为充满视窗的整个客户区。 ![]() ![]() Anchor属性 Anchor属性可以被设定为Top,Bottom,Left和Right的任何组合。这可以保持控件的top-left角与视窗边框具有相同的相对位置。设置Anchor属性为Top and Bottom可以垂直地调整控件,保证从视窗底部到控件底部距离相同。 ![]() 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中没有默认的窗体实例。 |
评论