vb.net包含代码 vbnet imports( 九 )


* 1998年夏天,VB6.0发布 。
* 2001年,Visual Basic .NET和.NET Framework发布 。Visual Basic .NET正式诞生 。
* 2005年,微软宣布将不会再对非.NET版本的VB进行支持 。
*2010年,Visual Basic .NET随Visual Studio 2010发布,不再提供单独的Visual Basic .NET IDE 。MONO开发平台提供了一个VB.NET特性库(VB.NET-specific libraries)并着手研发一个编译器和Windows Forms GUI 库 。由于各方面的原因,VB.NET开发的开源工具较C#发展得慢一些 。
VB.NET中的动态代码生成技巧 本文的讨论也将着眼于这两种情况 首先是当程序员需要动态建立一个控件并将代码附着于控件之上时 例如 你或许想创建一个链接列表 但是不知道需要创建链接的数量或是链接中会出现什么样的数据 第二种是当程序员需要定义代码以反映出特殊需求的时候 例如 你或许要执行能反映用户系统配置的代码
类似上述的情况当然不会每天都上演 事实上 它们只在非常情况下才出现 然而 作为程序员 仍然要意识到 NET为解决动态情形提供了方案 有了正确的技巧 你就可以写出能灵活处理动态情况的应用程序了
使用动态控件
许多程序员总会遇到需要动态创建控件的时候 我们所展示的例子中程序员向FlowLayoutPanel中添加了LinkLabels 或许你可以个这样的设置来记录和保存常用的URL 文件 网络地址或是其他资源所在位置的数值 这一示例没有真正保存链接 但是你可以使用XML序列化功能来实现保存
每次当用户点击Test按钮时 示例代码就会动态创建一个新的LinkLabel控件 真正的演示代码并不复杂 例一就展示了创建这类控件以及将控件放入FlowLayoutPanel lstLabel中通常所需要做的一切
例一 向FlowLayoutPanel中添加新的链接Private Sub btnTest_Click() Handles btnTest ClickCreate a linkDim NewLink As LinkLabel =New LinkLabel()Add some properties to itNewLink Text = DateTime NowToLongTimeString()Set the click event handlerAddHandler NewLink ClickAddressOf NewLink_ClickPlace the button on the formlstLinks Controls Add(NewLink) End Sub
如你所料 该代码开始的时候创建了一个新的LinkLabel并为其赋予了一些值 这一示例使用的是当前时间 你的代码或许能够对某一真实资源进行访问
请注意该代码也向链接的Click事件中指定了一个处理程序 你必须使用示例中的AddHandler技巧 因为普通的Handles关键词路径不起作用 一方面 设计应用程序的时候你并不清楚控件的名称 即便你为控件指定了一个名称 你也不知道用户要创建的控件数量 所以我们没有办法清楚会有多少处理程序会被创建 处理程序的代码与控件代码类似 因此没有必要创建多个处理程序 用于这个示例的处理代码见例二 例二 处理动态控件点击事件Private Sub NewLink_Click( _ ByVal sender As System ObjectByVal e As System EventArgs)Verify that you actually have a LinkLabelIf Not sender GetType() Is GetType(LinkLabel) ThenMessageBox Show( Wrong control type provided! )ReturnEnd IfConvert the input sender to a Button Dim ThisLink As LinkLabel = senderShow that we have the correct button MessageBox Show( You created this link at:+ ThisLink Text)End Sub
你可能已经注意到例一中的事件处理器使用的是宽松代表——它没有将ByVal发送器作为System Object 也没有将ByVal e作为System EventArgs作为参数因为它不需要这二者 然而 当你创建一个事件处理器来动态创建控件时 通常你需要将ByVal发送器作为System Object参数 这意味着将这两者都包含其中
有些程序员在创建事件处理器的时候会出现一个错误 即没有检查传入控件的类型 发送器对象可能包含多选择 而如果未对事件处理器进行事件处理类型的设置 那么你就会面临更多的选择 我们的示例代码一开始就检查了传入控件对象的类型 这样以来发送器就不会像下面所展示的代码一样Private Sub btnTest _Click() Handles btnTest ClickCreate a link Dim NewButton As Button = New Button()Add some properties to it NewButton Text = DateTime Now ToLongTimeString()Set the click event handler AddHandler NewButton ClickAddressOf NewLink_ClickPlace the button on the form lstLinks Controls Add(NewButton)End Sub

推荐阅读