设为首页收藏本站language 语言切换
查看: 1200|回复: 0
收起左侧

如何在VB.NET中创建Windows应用程序之二

[复制链接]
发表于 2010-2-25 10:41:26 | 显示全部楼层 |阅读模式
<p ><ccid_nobr>缺少控件数组<BR><BR>对于VB6开发者来说,在VB.NET中感觉很不方便的一点是缺少了控件数组。有什么办法来实现与控件数组相同的效果呢?从上文的.net中的事件处理机制我们知道,在.net中允许多个对象的事件使用同一个事件处理程序,那么结合一个标准数组就不难实现控件数组的效果了。<BR><BR>下面是一个简单的例子。<BR><BR>1.创建一个新的VB.NET Windows 应用程序。<BR><BR>2.在窗体上放置五个radio button,并在窗体上增加一个label。<BR><BR>3.双击一个radio button,会转到它的CheckedChanged事件处理程序,修改 Handles子句以包含其他四个的CheckedChanged事件。<BR><BR><CENTER><ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"  bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code" ><pre><ccid_code>rivate Sub RadioButton1_CheckedChanged( _    ByVal sender As System.Object, _    ByVal e As System.EventArgs) _    Handles RadioButton1.CheckedChanged, _        RadioButton2.CheckedChanged, _        RadioButton3.CheckedChanged, _        RadioButton4.CheckedChanged, _        RadioButton5.CheckedChangedEnd Sub</ccid_code></pre></td></tr></table></ccid_nobr></CENTER><p >4.创建一个radio buttons的数组作为一个私有成员变量:Dim radioButtons(4) As RadioButton <p >5.创建一个整形私有变量:Dim selectedOption As Integer = 0 <p >6.在窗体构造器代码中增加代码以把这些radio button填充到数组中<p ><CENTER><ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"  bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code" ><pre><ccid_code>ublic Sub New()  MyBase.New()  'This call is required by the  Windows Form Designer.  InitializeComponent()  'Add any initialization after   the InitializeComponent() call  radioButtons(0) = RadioButton1radioButtons(1) = RadioButton2  radioButtons(2) = RadioButton3radioButtons(3) = RadioButton4  radioButtons(4) = RadioButton5End Sub</ccid_code></pre></td></tr></table></ccid_nobr></CENTER><p >7.在刚才的CheckedChanged程序中加入如下代码:<p ><CENTER><ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"  bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code" ><pre><ccid_code>rivate 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 &lt; 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 WhileEnd Sub</ccid_code></pre></td></tr></table></ccid_nobr></CENTER><p >编译运行这个程序,你会发现每次选择不同的radio button的时候,在label中显示相应的序号。是不是和控件数组一样的效果?<p >设置你的窗体的大小改变<p >在VB6中我每次改变窗体的大小,都不得不在窗体的Resize 事件中编写代码。在vb.net中有许多特点可以让你不写一行代码就可以改变控件的大小。下面我们将了解三种新特点和面板的使用,通过结合使用他们可以增强你的控件管理的灵活程度。<p >Docking属性<p >这个属性可以被设置为Top,Bottom,Left,Right或Fill。可以使控件紧挨指定的视窗边缘,或者紧挨已放置到相应视窗边缘的其他控件。设置Dock属性为Fill可以使控件调整为充满视窗的整个客户区。<p ><CENTER><img  src="http://www.hh010.com/upload_files/article/244/9_icae8w475653.gif"></CENTER><BR><BR><p ><CENTER><img  src="http://www.hh010.com/upload_files/article/244/9_g24hhf475655.gif"></CENTER><BR><BR><p >Anchor属性<p >Anchor属性可以被设定为Top,Bottom,Left和Right的任何组合。这可以保持控件的top-left角与视窗边框具有相同的相对位置。设置Anchor属性为Top and Bottom可以垂直地调整控件,保证从视窗底部到控件底部距离相同。 <p ><CENTER><img  src="http://www.hh010.com/upload_files/article/244/9_4huhbp475657.gif"></CENTER><BR><BR><p >AutoScrolling 窗体<p >AutoScroll特性,允许用户改变窗体的大小,而不改变控件的大小,改变窗体大小的时候会出现滑动条。<p ><CENTER><img  src="http://www.hh010.com/upload_files/article/244/9_shbq5m475659.gif"></CENTER><BR><BR><p ><CENTER><img  src="http://www.hh010.com/upload_files/article/244/9_y4t4xb475661.gif"></CENTER><BR><BR><p >没有默认的窗体实例的编程<p >类和对象虽然在VB6中也存在,但是远远没有像在.NET中一样对象无处不在。对于VB6开发者来说,最常碰见的一个问题就是在.NET中缺乏默认的窗体实例。<p >VB 6 允许代码直接访问尚未实例化的窗体类;然而VB .NET 却规定在访问任何类之前都要进行实例化,而且必须借助实例来访问类。VB 6能自动生成每个窗体的默认实例,从而允许直接通过窗体名称来访问窗体,可以直接用代码 "Form2.Show" 显示 Form2 的默认实例;然而在 VB .NET 中,这么做只会引发错误,因为 Visual Basic .NET 既不会创建默认的窗体实例,也不允许直接访问尚未实例化的窗体类。<p >你只有先创建窗体实例,然后才可以显示窗体外观、访问窗体属性及其控件。在 VB 6 等早期版本中,多个窗体之间的交互通常需要借助默认窗体实例来完成。在 .NET 下实现多窗体交互,进行 .NET 窗体编程时应该牢牢把握下列原则:在访问窗体之前,你必须进行窗体实例化;如果在项目中有多处代码访问同一窗体,则你必须把它的同一实例指针传递给这些代码。<p >总结<p >以上总体描述了在VB.NET中新的Windows客户端开发的模型,以下几点比较重要:<p >Windows窗体是一个新的窗体模型,与VB6的窗体模型相比,有更多新特点。<p >在.net中查看所有你创建和设置你的用户界面的代码,有时可以编辑。<p >在.NET中事件处理机制不在基于事件处理程序的名字,而是利用Handles关键字。<p >由于新增的docking(停靠)和anchoring(锚定)属性,窗体布局比在VB6中更强大了。<p >在VB .NET中没有默认的窗体实例。<p >(T117)<p ></ccid_nobr><p align="center"></p></p>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-4 20:09 , Processed in 0.080276 second(s), 24 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表