正文

如何在VB.NET中创建Windows应用程序之二2005-09-27 13:21:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/iamben250/5407.html

分享到:

如何在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事件。

Private Sub RadioButton1_CheckedChanged( _
    ByVal sender As System.Object, _
    ByVal e As System.EventArgs) _
    Handles RadioButton1.CheckedChanged, _
        RadioButton2.CheckedChanged, _
        RadioButton3.CheckedChanged, _
        RadioButton4.CheckedChanged, _
        RadioButton5.CheckedChanged
End Sub


4.创建一个radio buttons的数组作为一个私有成员变量:Dim radioButtons(4) As RadioButton

5.创建一个整形私有变量:Dim selectedOption As Integer = 0

6.在窗体构造器代码中增加代码以把这些radio button填充到数组中

Public Sub New()
  MyBase.New()
  'This call is required by the
  Windows Form Designer.
  InitializeComponent()
  'Add any initialization after 
  the InitializeComponent() call
  radioButtons(0) = RadioButton1
radioButtons(1) = RadioButton2
  radioButtons(2) = RadioButton3
radioButtons(3) = RadioButton4
  radioButtons(4) = RadioButton5
End Sub


7.在刚才的CheckedChanged程序中加入如下代码:

Private Sub RadioButton1_CheckedChanged( _
    ByVal sender As System.Object, _
    ByVal e As System.EventArgs) _
    Handles RadioButton1.CheckedChanged, _
        RadioButton2.CheckedChanged, _
        RadioButton3.CheckedChanged, _
        RadioButton4.CheckedChanged, _
        RadioButton5.CheckedChanged
  Dim i As Integer = 0
  Dim found As Boolean = False
  While i < radioButtons.GetLength(0)
  And Not found
    If radioButtons(i).Checked Then
      found = True
      selectedOption = i + 1
      Label1.Text = CStr(selectedOption)
    End If
    i += 1
  End While
End Sub


编译运行这个程序,你会发现每次选择不同的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中没有默认的窗体实例。

阅读(2203) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册