从过去到未来、 从Visual和Basic到Net。(从VB到VB.NET的12个技巧)(三)

原创 2001年08月08日 22:51:00

从过去到未来、 VisualBasicNet(三

10.    运行时动态的创建控件。VBNET不再象VB6那样直接支持控件数组了,用VBNET会有不同的实现办法和需要更多的代码,VBNET的实现机制有些象Java的实现了。一直很怀疑MS是否把以前VJ中的WFC直接搬到VSNET中。

过去的VB

======================================================

Private Sub cmdAddButton_Click(Index As Integer)

      Static counter As Integer

      counter = counter + 1

      If counter < 4 Then

         Load cmdAddButton(counter)

         With cmdAddButton(counter - 1)

            cmdAddButton(counter).Move _

               .Left + .Width + _

               (10 * Screen.TwipsPerPixelX), .Top

         End With

         cmdAddButton(counter).Visible = True

      End If

   End Sub

 

现在的VB.NET

======================================================

 (第一种实现)

   Private Sub btnAddButton_Click(ByVal sender As _

      System.Object, ByVal e As System.EventArgs) _

      Handles btnAddButton.Click

  

      Static counter As Integer = 1

      Static lastButton As System.Windows.Forms.Button

      counter += 1

      If lastButton Is Nothing Then

         lastButton = btnAddButton

      End If

      If counter < 4 Then

         Dim b As New System.Windows.Forms.Button()

         With lastButton

            b.Width = .Width

            b.Text = .Text

            Controls.Add(b)

            b.Left = .Left + .Width + 10

            b.Top = .Top

            lastButton = b

         End With

      AddHandler b.Click, AddressOf  Me.btnAddButton_Click

      End If

   End Sub

 

( 第二种实现)

      Private Sub btnNewAdd_Click(ByVal sender As _

      System.Object, ByVal e As System.EventArgs) _

      Handles btnNewAdd.Click

  

      Dim b As New System.Windows.Forms.Button()

      With sender

         b.Width = .width

         b.Text = "Click Me!"

         Controls.Add(b)

         b.Left = .Left + .Width + 10

         b.Top = .Top

      End With

      AddHandler b.Click, AddressOf Me.newButtonClick

   End Sub

 

使用GetChildIndex来获得控件数组中的控件。

Private Sub newButtonClick(ByVal sender As _

      System.Object, ByVal e As System.EventArgs)

      MsgBox("A new button was clicked! The index of " _

         " this button is: " & Me.Controls.GetChildIndex _

         (sender))

End Sub

 

11.   变量和数组的定义。

VB6的变量定义是很神奇的,开始用VB时,我一直以为 Dim X , Y as String 是一样的。等知道不同时也不喜欢用 Dim X as String , Y as String 来定义、宁愿分两行定义。现在的VBNET中在同一语句中定义的变量必须是同种类型,也就是说Dim X as Integer , Y as String 已不在允许了。最让我满意的是VBNET开始支持这样的语法: dim x As integer = 24 ,等了它许多年了。数组的定义,特别是初始化也改进了不少,现在可以在定义的同时赋值进行初始化,省去定义一个循环变量和做一个For循环,而且数组的下标是基于零了,突然数组只可以是基于零的下标,这下所有数组都由零开始了。

过去的VB

======================================================

Dim X as Integer

X = 100

 

Dim MyArray( 10 ) as Integer ( 实际有11个元素)

For i = 0 To 10

           MyArray ( I ) = I

Next

 

Dim MyArray1( 10 ) as Integer

Dim MyArray2(10) as Integer

For i = 0 To 10

           MyArray 1( I ) = I

Next

For i = 0 To 10

           MyArray 2( I ) = MyArray1( I )

Next

 

现在的VB.NET

======================================================

Dim X as Integer = 100

 

Dim MyArray ( 10 ) as Integer = ( 0,1, 2, 3, 4, 5, 6, 7,8 , 9 ) (10个元素)

 

Dim MyArray1(10) as Integer = ( 0,1, 2, 3, 4, 5, 6, 7,8 , 9 )

Dim MyArray2(10) as Integer = MyArray1

 

12.   开始支持结构化的错误处理,引进了新的Try Catch Finally 语句而且也有了Throw 表达式,这样在多层的错误处理中你可以少写许多On Error GoTo 不要再费心GoTo的满天飞了。VBNET仍然也支持原来非机构的错误处理语句比如有趣的 On Error GoTo 0 On Error resume Next 等等。不过一个函数中同时存在结构和非结构的错误处理代码时看起来一定非常有趣。就象新版帝国2中的农民一样,代码防御力增加Double

 

总的来说VB.NET比以前的VB要简洁和更少的代码,但也需要你了解更多的对象和对象的方法。不能说VBNETVB好或不好,有时我想把VBVBNET看做根本是两种不同的语言,也许会更实际一点,这样我们就不会妄想目前的VB程序进行小小的修改就可以在dotnet的平台上运行了。

 

虽然目前所有正在运行的应用都不可能简单的升级到dotNet,不过这并不妨碍你多学习一门语言,接受一种变化;事实上无论VB如何发展,对于你来说掌握和适应Visual Studio.NET都将是一个曲线的演变,不管是现在还是未来。

 

Visual Basic .NET 继VB后要求运行在.net平台上

Visual Basic.NET是基于微软.NET Framework之上的面向对象的中间解释性语言,可以看作是Visual Basic在。Net Framework平台上的升级版本,增强了对面向...
  • zxxSsdsd
  • zxxSsdsd
  • 2013年07月16日 15:28
  • 1427

vb.net graphic类 画圆,椭圆 画两点之间的坐标 画窗体改变跟随画图 图片的水平垂直翻转

画圆 圆心为(350,250)半径为200 Public Class Form1 Private Sub Form1_Paint(ByVal sender As Object, ByVal...
  • a771948524
  • a771948524
  • 2013年04月25日 14:26
  • 2585

VB与VB.net的区别

概述: VB.NET是基于微软.NET Framework之上的面向对象的编程语言。其在调试时是以解释型语言方式运作,而输出为EXE程序是是以编译型语言方式运作。可以看作是VB在.NetFramewo...
  • wxr15732623310
  • wxr15732623310
  • 2016年01月28日 21:27
  • 1141

VB.NET实现Windows剪贴板监视器

Windows剪贴板剪贴板(ClipBoard)是内存中的一块区域,是Windows内置的一个非常有用的工具,通过小小的剪贴板,架起了一座彩桥,使得在各种应用程序之间,传递和共享信息成为可能。然而美中...
  • testcs_dn
  • testcs_dn
  • 2014年12月25日 14:43
  • 3852

【Visual Basic】计时器与窗体屏幕尺寸的取法

主要是利用一个小例子讲解VB中计时器Timer的运用。 如下图所示: 有一个显示当前时间,在屏幕的边缘不停地移动。 首先是窗体设置,直接从工具箱拖入Label与Timer控件。Timer...
  • yongh701
  • yongh701
  • 2015年08月06日 09:30
  • 1304

VB.NET与VB6.0的区别

VB.NET的视频已经看完了,虽说是VB.NET视频,但是大部分讲的是.NET平台。其实VB.NET就是VB6.0与C#的结合体,VB6.0的语法加上C#的思想。         一、整体  ...
  • u013034286
  • u013034286
  • 2015年02月11日 16:58
  • 1097

Visual Basic快捷教程——变量、常量和运算符

程序中数据最基本的存储单位就是变量,程序执行时会在计算机内存中开辟空间存储变量。而计算机程序的执行基本就是通过读取或操作这些变量来实现的。此外,在某些时候,虽然声明了一个变量,但却不希望这个变量的数值...
  • baimafujinji
  • baimafujinji
  • 2017年07月25日 17:08
  • 1033

数据库——SQL server2008安装与visual basic连接

这是自己当时初始CSDN上写的第一篇博客,其中当时的心情依然记忆尤新,总之美美的。...
  • u013030601
  • u013030601
  • 2014年06月29日 11:32
  • 1487

VB6转VB.Net学习笔记

OCX控件注册:regsvr32 xxx.ocx,不需要加任何参数。
  • F2004
  • F2004
  • 2013年12月25日 19:20
  • 1005

VB.net学习笔记(九)委托

Module Sort '声明委托。类似C++的函数指针类型 Public Delegate Function Compare(ByVal v1 As Object, ByVal v2 As ...
  • dzweather
  • dzweather
  • 2013年08月05日 20:53
  • 4970
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从过去到未来、 从Visual和Basic到Net。(从VB到VB.NET的12个技巧)(三)
举报原因:
原因补充:

(最多只允许输入30个字)