重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
总体来说,操作上区别不大,
江永网站建设公司创新互联,江永网站设计制作,有大型网站制作公司丰富经验。已为江永近千家提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的江永做网站的公司定做!
都是在一个空白的窗体上面画控件,
基本控件总体变化不大,
而且预设的控件量很多,
基本上不用再倒入其他什么玩艺儿了……
(.NET 里是没有 ActiveX 控件这么一说的,大家平起平坐)
可是代码的变化很大,关键字啊变化都挺大的……
比如,在控件方面,控件的文本属性都是 Text,而没有 Caption 这么一说
不过 Value 属性依然保留。
Form 的 Show 方法被拆成了 Show 和 ShowDialog,顾名思义。
Unload 方法被 Form 的 Close 方法代替。
在对控件的事件处理方面,VB 6.0 使用方法的名称来定义事件处理程序,
而在 .NET 中使用 Handles 语句来定义,
并且可以用 AddHandler 来在运行时定义事件处理程序。
在关键字方面,
VB.NET 使用 Class、Module 关键字来标记一个模块,
就像 Sub、Function 一样,
而不是以文件区分,
即一个文件里能放多个模块。
而且 VB.NET 能够提供完备的 OOP 支持,
较 VB6.0 相比,
可以使用 Inherit 关键字来实现类的继承,
因此“基类”、“派生”、“重写”不再是 C 的专利。
于是又出现了 MyBase 关键字用于表示当前实例(Me)的基类,
在 .NET 里,和“我”有关的关键字包括:Me、My、MyBase、MyClass。
随之而来的是与可继承性有关的 Overridable、MustInherit、MustOverride、NotInheritable、NotOverridable、Protected,
与继承相关的 Inherit、Override 关键字。
另外,VB.NET 支持成员重载,即使用相同的名称与不同的参数来区分不同的成员。
而且,在 .NET 框架中,
有一个用来将不同的模块分开的容器,命名空间(Namespace 关键字),使模块井井有条,减少了命名冲突的发生。
比如内置的各种控件都定义在System.Windows.Forms 命名空间里。
在数据类型方面,
在 .NET 框架中,所有的类型(包括继承自 ValueType 的 String、Integer、作为各种枚举的基类的Enum类型等)都继承自 Object 类型,即 Object 取代了 Variant。
而 Object 有一个很方便的 ToString 函数,在 CStr 不管用的时候可以用这个。
而且,在 .NET 中,考虑到程序的性能,
不建议使用后期绑定,例如:
(VB 6.0)
Dim V1 As String, V2 As String
V2 = V1 * 50
在 .NET 中,
如果文件头部有 Option Strict [On],
或是(建议)在工程设置里打开这一选项,
第二行就会报错,
因为*不是适用于 String 的操作符,
而在 VB 6.0里会自动执行转换,
如果是在 VB.NET,建议执行强制转换:
(VB.NET)
Dim V1 As String, V2 As String
V2 = CStr(CInt(V1) * 50)
同理,
(VB 6.0)
Dim Obj As Object
Set Obj = TextBox1
Obj.Text = “Hello World!”
第三行就会报错,
因为 Caption 不是 Object 的属性,
而是 TextBox 的属性,
解决方案是,使用早期绑定:
(VB.NET)
TextBox1.Text = “Hello World!”
如果需要,可以使用:
DirectCast(Obj, TextBox).Text = “Hello World!”
与此相关的新式转换关键字包括 CType、DirectCast、TryCast、CObj
尽管看起来累赘些,
但可以避免过度的随意性。
由此,许多在 VB 6.0里不是很明朗的东西变得豁然开朗,
比如我们设计的窗体其实继承自 Form 类,
而 Form 类又继承自 Object,因此我们可以使用:
(VB 6.0)
Dim FormInstance As Form
Set FormInstance = New Form1
而不会报错。
说到这里,.
NET 不支持默认属性,
即:
(VB 6.0)
Command1 = “Hello World!”
等价于:
Command1.Caption = “Hello World!”
而在 .NET 中没有 Set 关键词:
(VB.NET)
Dim Ctl As Control
Ctl = Command1
只能先说到这里了……
有点多,
总之是 .NET 很强大,
过渡不是没有可能,
但要多看 MSDN。
vb.net的MSDN都在微软的网站上,因为微软每天都在更新MSDN的内容,当然也有离线版,不过容量太大(10多G),不建议安装,如果要装的话,请参考:
在VB.NET操作缩放图像中的显示和保存缩放图像,用到Image和Graphics类,在VSDotNet2K3下面Reference里自动添加了引用System.Drawing,直接用就行。
实现VB.NET操作缩放图像代码如下:DimimgAsImageImage=Image.FromFile
(D:\Image\tstImage.jpg)
''tstImage是原先的图片DimgrfxAsGraphics=Me
.CreateGraphics
grfx.DrawImage(img,0,0,img.Width*
3,img.Height*3)''在Form里显示
DimimgnewAsNewSystem.Drawing.Bitmap
(img,img.Height*3,img.Width*3)
''新建一个放大的图片
imgnew.Save(D:\Image\tstNewImage.jpg,
System.Drawing.Imaging.ImageFormat.Jpeg)
''保存放大后图片
你可以建一个Form,然后在Form里拖进一个Button,把上面的代码放在Button_Click事件里面源码天空
,执行就行了。
对上面VB.NET操作缩放图像代码的解释:
1.要获取Graphics对象只能从某一事件的参数中获取或者使用窗体和控件对象的CreateGraphics方法来获取-----上面代码使用Me.CreateGraphics来引用这个对象。
2.加载一个图片用Image类的FromFile或者FromStream方法
3.用DrawImage来显示一个图片,该方法有30多个重载方法,可以查MSDN了解细节。
4.保存时的一个问题:我们必须先建一个对象,用于存缩放图像。
msdn文档在网页上有,浏览器打开就可以看到了。如果想看某个类库的介绍的话,直接在网址后面加上完整命名空间,比如就行了
我们都知道,面向对象语言的三大特征是:封装、继承和多态。而重写和重载是多态的两种表现形式。多态,顾名思义,就是指多种形态。而重写和重载正好体现了这一点。现在我们以 VB.NET 语言来说明两者的区别。
重写是发生在父类与子类之间的关系。具体来讲就是子类可以重写父类的现有的方法。它要求子类的方法名称及参数必须与父类完全一致。比如吃饭,父亲可以吃两碗面,孩子同样也是吃面,却只能吃一碗。
重载则主要是发生在同一个类当中的,它通过多个名称相同的方法,但方法参数不相同,或者方法返回类型不相同来加以区别。其中,方法参数不相同包括以下几种情况:参数的个数不相同,参数的类型不相同,参数的对应位置不相同。需要说明的是,重载同样可以应用到父类与子类当中。即子类重载了父类的方法。
重写:
在 VB.NET 中,重写汲及到的关键字有:
OverRidable: 在父类中声明的可以在子类中重写的方法。
OverRides: 在子类中声明的要重写父亲中可重写的方法。
MustOverRide: 在父类中,表示这个方法必须在子类中重写。此时,该类必须声明为抽象类。
NotOverridable: 如果当前类还有子类,那么,在其子类中,该方法不允许被重写。
重载:
在 VB.NET 中,重载用到的关键是 OverLoads。
这里需要说明几点:
1. 对于在同一类当中,一组名称相同的方法或函数重载时,可以加关键字 OverLoads 或者不加。但如果其中有一个方法加上,那同组其它方法也必须加该关键字。
2. 如果该方法是重载父类中的方法。那么必须加 OverLoads 关键字。
3. 如果两个同名函数仅返回类型不相同,则它们不能重载,即必须在参数上有所不同。