文本编辑器vb.net 文本编辑器手机版

用vb.net编写记事本源代码Dim sFileName As String
Dim Search
Private Sub dateTimeMenu_Click()
Text1.Text = Now
End Sub
Private Sub deleteMenu_Click()
Text1.Text = Left(Text1.Text, Text1.SelStart)Mid(Text1.Text, Text1.SelStartText1.SelLength1)
End Sub
Private Sub findMenu_Click()
Search = InputBox("请输入要查找文本编辑器vb.net的字词:")
Dim Where1 '获取需要查找的字符串变量
Text1.SetFocus '文本框获得焦点文本编辑器vb.net,以显示所找到的内容Search = InputBox("请输入要查找的字词:")
Where1 = InStr(Text1.Text, Search) '在文本中查找字符串
If Where1 Then
'若找到则设置选定的起始位置并使找到的字符串高亮
Text1.SelStart = Where1 - 1
Text1.SelLength = Len(Search)
' Me.Caption = Where1 '测试用
'否则给出提示
Else: MsgBox "未找到所要查找的字符串 。", vbInformation, "提示"
End If
End Sub
Private Sub findNextMenu_Click()
Dim Where2
Dim StartMe As Integer '查找的起始位置变量
Text1.SetFocus '文本框获得焦点
StartMe = Text1.SelLengthText1.SelStart1 '给变量赋值
Where2 = InStr(StartMe, Text1.Text, Search) '令其从上次找到的地方找起
If Where2 Then
Text1.SelStart = Where2 - 1
Text1.SelLength = Len(Search)
Else: MsgBox "未找到所要查找的字符串.", vbInformation, "提示"
End If
End Sub
Private Sub aboutMenu_Click()
MsgBox Space(2)"文本编辑器版本号1.0"Chr(13)"由西南财经大学天府学院"Chr(13)Space(5)"肖忠 开发"Chr(13)Space(2)"copyright:天府学院"
End Sub
Private Sub allMenu_Click()
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End Sub
Private Sub backcolorMenu_Click()'设置背景色代码
Form1.CommonDialog1.Action = 3
Text1.BackColor = Form1.CommonDialog1.Color
End Sub
Private Sub colorMenu_Click()'改变文字颜色代码
Form1.CommonDialog1.Action = 3
Text1.ForeColor = Form1.CommonDialog1.Color
End Sub
Private Sub cutMenu_Click()
Clipboard.SetText Text1.SelText
Text1.Text = Left(Text1.Text, Text1.SelStart)Mid(Text1.Text, Text1.SelStartText1.SelLength1)
End Sub
Private Sub exitMenu_Click()
End
End Sub
Private Sub fontMenu_Click()'字体菜单代码
Form1.CommonDialog1.Flags = 3 Or 256
Form1.CommonDialog1.Action = 4
If Len(Form1.CommonDialog1.FontName) = 0 Then
Form1.Text1.FontName = "宋体"
Else
Form1.Text1.FontName = Form1.CommonDialog1.FontName
End If
Form1.Text1.FontSize = Form1.CommonDialog1.FontSize
If Form1.CommonDialog1.FontBold = True Then
Form1.Text1.FontBold = True
Else
Form1.Text1.FontBold = False
End If
If Form1.CommonDialog1.FontItalic = True Then
Form1.Text1.FontItalic = True
Else
Form1.Text1.FontItalic = False
End If
Text1.ForeColor = Form1.CommonDialog1.Color
End Sub
Private Sub Form_Load()
Form1.Text1.Width = Form1.Width - 130
Form1.Text1.Height = Form1.Height
End Sub
Private Sub Form_Resize()
Form1.Text1.Width = Form1.Width - 130
Form1.Text1.Height = Form1.Height
End Sub
Private Sub help1Menu_Click()
Form1.CommonDialog1.HelpCommand = cdlHelpForceFile
Form1.CommonDialog1.HelpFile = "c:\windows\system32\winhelp.hlp"
CommonDialog1.ShowHelp
End Sub
Private Sub newMenu_Click()
If Len(Trim(Text1.Text)) = 0 Then
Form1.Caption = "我的记事本""--""未命名"
sFileName = "未命名"
Text1.FontSize = 15
Text1.FontName = "宋体"
Text1.Text = ""
Else
Call saveAsMenu_Click
Form1.Caption = "我的记事本""--""未命名"
sFileName = "未命名"
Text1.FontSize = 15
Text1.FontName = "宋体"
Text1.Text = ""
End If
End Sub
Private Sub openMenu_Click()'打开文件代码
If Len(Trim(Text1.Text)) = 0 Then
Form1.Caption = "我的记事本"
Form1.CommonDialog1.Filter = "文本文件|*.txt"
Form1.CommonDialog1.Flags = 4096
Form1.CommonDialog1.Action = 1
If Len(Form1.CommonDialog1.FileName)0 Then
sFileName = Form1.CommonDialog1.FileName
Form1.Caption = Form1.Caption"--"Form1.CommonDialog1.FileTitle
Open sFileName For Input As #1
Text1.FontSize = 15
Text1.FontName = "宋体"
Do While Not EOF(1)
Line Input #1, Text$
All$ = All$Text$Chr(13)Chr(10)
【文本编辑器vb.net 文本编辑器手机版】Loop
Text1.Text = All
Close #1
End If
Else
Call saveAsMenu_Click
Form1.Caption = "我的记事本"
Form1.CommonDialog1.Filter = "文本文件|*.txt"
Form1.CommonDialog1.Flags = 4096
Form1.CommonDialog1.Action = 1
If Len(Form1.CommonDialog1.FileName)0 Then
sFileName = Form1.CommonDialog1.FileName
Form1.Caption = Form1.Caption"--"Form1.CommonDialog1.FileTitle
Open sFileName For Input As #1
Text1.FontSize = 15
Text1.FontName = "宋体"
Do While Not EOF(1)
Line Input #1, Text$
All$ = All$Text$Chr(13)Chr(10)
Loop
Text1.Text = All
Close #1
End If
End If
End Sub
Private Sub pasteMenu_Click()'粘贴菜单代码
Text1.Text = Left(Text1.Text, Text1.SelStart)Clipboard.GetText()Mid(Text1.Text, Text1.SelStartText1.SelLength1)
End Sub
Private Sub printMenu_Click()
Form1.CommonDialog1.ShowPrinter
For i = 1 To CommonDialog1.Copies
Printer.Print Text1.Text
Printer.Print Text1.Text
Next
Printer.EndDoc
End Sub
Private Sub saveAsMenu_Click()'另存为菜单代码
If Len(Trim(Text1.Text))0 Then
Form1.CommonDialog1.DialogTitle = "保存文件"
Form1.CommonDialog1.InitDir = "D:\"
Form1.CommonDialog1.Filter = "文本文件|*.txt"
Form1.CommonDialog1.Flags = 2
Form1.CommonDialog1.ShowSave
If Len(Form1.CommonDialog1.FileName)0 Then
sFileName = Form1.CommonDialog1.FileName
Open sFileName For Output As #1
whole$ = Text1.Text
Print #1, whole
Close #1
End If
End If
End Sub
Private Sub saveMenu_Click()
If Len(Trim(Text1.Text))0 Then
Form1.CommonDialog1.DialogTitle = "保存文件"
Form1.CommonDialog1.InitDir = "D:\"
Form1.CommonDialog1.FileName = "新建文本"
Form1.CommonDialog1.Filter = "文本文件|*.txt"
Form1.CommonDialog1.Flags = 2
Form1.CommonDialog1.ShowSave
If Len(Form1.CommonDialog1.FileName)0 Then
sFileName = Form1.CommonDialog1.FileName
Open sFileName For Output As #1
whole$ = Text1.Text
Print #1, whole
Close #1
End If
End If
End Sub
Private Sub statusMenu_Click()
End Sub
vb和vb.net的区别VB.NET和VB6.0有什么区别
Visual Basic .NET是Microsoft Visual Studio .NET套件中主要组成部分之一 。.NET版本的Visual Basic增加了更多特性 , 而且演化为完全面向对象(就像C)的编程语言 。本文将介绍VB.NET的新特性,并比较VB6.0/VB.NET之间的区别,阐述如何利用VB.NET编写简单的应用程序 。
1.1 什么是 VB.NET? Microsoft推出全新的编程和操作系统Framework——.NET,支持多种语言利用公共.NET库开发应用程序,这些应用程序在.NET Framework上运行 。使用Visual Basic在.NET Framework上编程 , 这就是VB.NET 。
首先,让我演示在VB.NET中写最简单的控制台程序:Hello World 。
1.2 Hello, World!“Hello World!”是初学者学习Windows编程的代表性程序 。我们的第一个程序就叫做“Hello VB.NET World!” 。该程序在控制台输出一句话:“Hello VB.NET World!”,代码如下所示:
代码 1.1: Hello VB.NET World例子Imports System
Module Module1
Sub Main()
System.Console.WriteLine("Hello VB.NET World!")
End Sub
End Module
1.3 VB.NET 编辑器和编译器你可以在记事本或VS.NET IDE等任意文本编辑器中撰写上述代码,然后保存为HelloWorld.vb 。代码编写完成之后 , 要么在命令行、要么在VS.NET IDE中编译它 。在Microsoft .NET Framework SDK中已经包括VB.NET编译器vbc.exe[][1],从IDE或是命令行都可以调用 。要从命令行编译HelloWorld.vb , 请在命令行窗口输入
vbc HelloWorld.vb /out:HelloWorld.exe /t:exe
编译结束后,HelloWorld.exe被创建到当前目录下 。在资源管理其中双击图标或在命令行执行 , 程序正确地运行了 。祝贺你进入VB.NET开发者的行列 。
Imports 语句
如你所知,大部分的.NET类型都在名字空间(namespace)中定义 。Namespace是定义和管理类别的范畴 。察看.NET Framework Class Library,可以看到数以百计的namespace 。例如,System namespace就包括了Console、Object等类型定义 。如果想使用Console类,需要用Imports指令导入System namespace 。如下所示:
Imports System甚至可以明确地调用namespace而无需用Import导入 。下面的例子展示了不用Import的“Hello World!”程序:
代码1.2: Hello VB.NET World例子Module Module1
Sub Main()
System.Console.WriteLine("Hello VB.NET World!")
End SubEnd Module1.4 解析 "Hello VB.NET World!"程序第一行是:
Imports System; System namespace定义了Console类,该类用于读写控制台(命令行窗口) 。然后你定义了一个module:Module Module1
…End Module所有的VB程序都包括一个Main()方法,即应用程序入口点 。在例子程序中,我们调用Console.WriteLine()向控制台写入“Hello VB.NET World!”:
Sub Main()
Console.WriteLine(“Hello VB.NET World!”)End SubWriteLine()方法归属于Console类,它负责向控制台写一个带有行结束符的字符串 。如前所述,Console类定义于System namespace,你通过直接引用来控制类成员 。
Console类负责读写系统控制台 。读控制台输入用Read和ReadLine方法,向控制台输出用WriteLine方法 。
表1.1 Console类定义的方法
方法用途例子
Read读入单个字符int i = Console.Read();
ReadLine读入一行string str = Console.ReadLine();
Write写一行Console.Write("Write: 1");
WriteLine 写一行,并带上行结束符
Console.WriteLine("Test Output Data with Line");
1.5 VB.NET有什么新特点? VB.NET比 VB6.0更加稳定,而且完全面向对象 。也许你还记得,VB6.0不支持继承、重载和接口,所以不是真正面向对象的 。而VB.NET则支持这些面向对象特性 。VB6.0有两个薄弱环节——多线程和异常处理 。在VB.NET中,开发多线程应用和使用C/C#别无二致,结构化异常处理也得到支持 。稍后我们会详细解释这些特性 。
下面是VB.NET的特性列表——
·面向对象的编程语言 。支持继承、重载、接口、共享成员和构造器 。·支持所有的CLS特性,如存取控制.NET类、与其它.NET语言交互、元数据、公共数据类型、委托等等 。·多线程支持 。·结构化异常处理 。1.6 名字空间与集合 前面讨论了我们的第一个VB.NET程序 。该程序中首先引人注意的是名字空间(namespace) 。在.NET参考文档中,你会发现每个类都归属于某个namespace 。那么,namespace到底是什么?
一个namespace是类和组件的逻辑组合,其目的在于将.NET class按类别定义 。微软借用了Cclass packaging概念:namespace来描述这种组合 。.NET Framework中的组件被称为集合(assembly) 。全部.NET代码在数百个库文件(DLL)中定义 。Namespace把assembly中定义的类组织起来 。一个namespace可以包括多个assembly , 一个assembly也可以在多个namespace中定义 。namespace树的根节点是System namespace 。在.NET Library中 , 每个class都在一组相似的类别中定义 。例如 , System.Data namespace只包括数据相关类 。同样,System.Multithreading只包括多线程类 。
在使用.NET支持的语言(如C#、VB.NET、C.NET等)创建新应用程序时,你会注意到每个应用程序都被定义为一个namespace,而所有的class都归属于这个namespace 。通过引用这个namespace , 其它应用程序就能存取这些class 。在.NET中 , 代码被编译为中间语言(Intermediate Language,IL) , assembly中存储了IL代码、元数据和其它资源文件 。同一个assembly可以附属于一个或多个Exe/DLL 。所有的.NET库都存储在assembly中 。
1.7 VB.NET: 完全面向对象的编程语言抽象、封装、多态、继承是面向对象语言的四个基本属性 。VB6.0不支持继承,而VB.NET则不然 。所以,和C一样,VB.NET也是完全面向对象的编程语言 。
Class 和 ModuleVB.NET用Class...End Class语句对创建class 。每个VB.NET至少包括一个Module(模块) 。Module在Module…End Module语句对中实现 。应用程序的主要模块是Main方法 , 亦即应用程序入口点 。
和VB6.0相似的地方是,都可以使用Function/Sub关键字定义方法 。下面的例子显示了如何创建class、添加方法,并从主程序调用方法: Imports System
Module Module1
Sub Main()
Dim cls As TestClass = New TestClass
Console.WriteLine(cls.MyMethod)
End Sub
Class TestClass
Function MyMethod() As String
Return "Test Method"
End Function
End Class
End ModuleProperty属性(Property)是类变量的公共描述 。Property…End Property语句用以创建property 。属性的Get/Set方法分别用于取得和设置属性值 。下面的例子中,Data是TestClass的属性 。
Imports System
Imports System.Console
Module Module1
Sub Main()
Dim cls As TestClass = New TestClass
WriteLine(cls.MyMethod)
WriteLine(cls.Data)
cls.Data = "https://www.04ip.com/post/New Data"
WriteLine(cls.Data)
End Sub
End Module
Class TestClass
Private strData As String = "Some Data"
Function MyMethod() As String
Return "Test Method!"
End Function
' Adding Data property to the class
Public Property Data() As String
Get
Return strData
End Get
Set(ByVal Value As String)
strData = https://www.04ip.com/post/Value
End Set
End Property
重载VB.NET通过overload关键字支持方法重载 。使用这个关键字 , 你可以定义同名但不同参数的方法 。
类成员访问域
除了原有的Private和Public,VB.NET引入了几个新关键字 。全部访问域关键字列表如下:
关键字作用域
Private限于class内部
Public可以从class外访问
Friend限于class所属的应用程序内
Protected只能被class和其派生类访问
Protected Friend能被class、应用程序和派生类访问
继承继承是面向对象编程语言中最常用的技术 。继承让你能够重用类代码和功能 。
VB.NET支持继承 , 而VB6.0则不支持 。继承的好处在于你能使用任何人编写的类 , 从这些类派生自己的类,然后在自己的类中调用父类功能 。在下面的例子中,Class B派生自Class A,我们将从Class B中调用Class A的方法MethodA 。
Imports System
Imports System.Console
Module Module1
Sub Main()
Dim bObj As B = New B
WriteLine(bObj.MethodA())
End Sub
End Module
' Class A defined
Public Class A
Function MethodA() As String
Return "Method A is called."
End Function
End Class
'Class B, inherited from Class A. All members (Public and Protected)
' can be access via B now.
Public Class B
Inherits A
Function MethodB() As String
Return "Method B is called."
End Function
End Class
可以从一个class中派生多个自定义class,也可以从多个class派生一个自定义class 。
共享的成员类的共享成员被类的所有实体共享 。共享成员可能是属性、方法或字段/值域 。在你不想让用户全面控制自己的类时,共享成员相当有用 。例如,你可以开发一个类库,让用户通过共享成员使用其中的部分功能 。
可以通过class本身引用共享成员,而无需通过类的实体 。例如:Module Module1
Sub Main()
WriteLine(A.MethodA())
End Sub
End Module
' Class A defined
Public Class A
Shared Function MethodA() As String
Return "Method A is called."
End Function
End Class
多线程VB语言的一大弱点就是缺乏编写自由线程(free-threaded)程序的能力 。在.NET Framework中,所有语言共享CRL(Common Runtime Library , 公共运行库),也就是说,你可以用VB.NET、C#或其它.NET语言编写同样的程序 。
System.Threading namespace定义了线程类 。我们只需要引入System.Threading namespace,即可使用线程类 。
System.Threading.Thread类提供线程对象 , 可以使用Thread类创建或破坏线程 。
创建线程使用Thread类的实体创建一个新线程,然后用Thread.Start方法开始执行线程 。线程构造器接受一个参数,该参数指明你要在线程中执行的procedure 。在下例中,我想在oThread1(Thread类的一个实体)的第二线程中执行SecondThread过程:
oThread1 = New Thread(AddressOf SecondThread)
SecondThread procedure looks like below:
Public Sub SecondThread()
Dim i As Integer
For i = 1 To 10
Console.WriteLine(i.ToString())
Next
End Sub
然后,调用Thread.Start()开始线程:
oThread1.Start()
下面的代码创建两个第二线程:
Imports System
Imports System.Threading
Module Module1
Public oThread1 As Thread
Public oThread2 As Thread
Sub Main()
oThread1 = New Thread(AddressOf SecondThread)
oThread2 = New Thread(AddressOf ThirdThread)
oThread1.Start()
oThread2.Start()
End Sub
Public Sub SecondThread()
Dim i As Integer
For i = 1 To 10
Console.WriteLine(i.ToString())
Next
End Sub
Public Sub ThirdThread()
Dim i As Integer
For i = 1 To 10
Console.WriteLine("A"i.ToString())
Next
End Sub
End Module
破坏线程 调用Abort方法来破坏(中止)一个线程 。在调用Abort之前,确保用IsAlive判断线程处于活动状态 。
If oThread1.IsAlive Then
oThread1.Abort()
End If
暂停线程可以使用Sleep方法来暂停线程执行 。Sleep方法接受一个以毫秒为单位的参数,指明线程应当暂停多长时间 。
下面的例子让线程暂停1秒钟:
oThread2.Sleep(1000)你也可以使用Suspend和Resume方法来挂起和继续线程执行 。
设定线程优先级Thread类的Priority属性用于设定线程优先级 。该属性可以设置为Normal,AboveNormal,BelowNormal,Highest和Lowest 。如:
oThread2.Priority = ThreadPriority.Highest线程与Apartment使用ApartmentState属性设置线程的apartment类型 , 该属性值可以为STA , MTA或是Unknown[][2]:
oThread.ApartmentState = ApartmentState.MTAMTS意味着可以使用多线程模式 , 而STA则只能是单线程执行 。
Public Enum ApartmentState
{
STA = 0,
MTA = 1,
Unknown = 2,
}
1.8 结构化异常处理异常处理也被称之为错误处理 。作为VB程序员,你一定对On Error Goto和On Error Resume Next这些VB6.0错误处理语句耳熟能详 。这种类型的错误处理被称为非结构化异常处理(Unstructured Exception Handling) 。而在VB.NET中,Microsoft推出了结构化异常处理机制 。VB.NET支持类似C的TryCatch..Finally控制 。Try..Catch..Finally结构如下: Try
' 可能导致异常的代码
Catch
' 当异常发生时处理异常的代码
Finally
' 清理现场
End Try
Try语句块用以抛出异常 。如果异常发生,在Catch语句块中处理 。Finally语句块是可选的 , 在需要释放资源时特别有用 。
1.9 VB6.0与VB.NET的不同之处除了上面谈到的语言进化,还有一些语法上的变化 。所有这些语言和语法的变化在MSDN中均可查到,本文只作简单介绍 。
数据类型(Data Type)的改变VB.NET中有些数据类型得到改进 。下面是变化对照表 。
数据类型 VB6.0 VB.NET
Integer 16 bit size 32 bit size
Long 32 bit size 64 bit size
Currency 用于存储大浮点数 被decimal替代,支持更高精度
Variant 可以存储任意类型数据 被Object类型替代,也可以存储任意类型数据,但结果更好
Date Date类型被存储为double 引入DateTime类型,用于存储不同格式的日期
在VB.NET中,Short数据类型是16 bit的 。Short,Integer和Long都等同于CLR的System.Int16、System.Int32和System.Int64类型 。变量声明的变化在VB6.0中,变量声明有许多限制 。其中之一就是不能同行声明多个变量 。如果一定要在一行中声明多个变量,就一定得指明每个变量的类型,否则将被默认为Variant类型 。
Dim a1, a2 As Integer Dim a3 As Integer, a4 As Integer 第一行中的a1是Variant类型 , a2是Integer类型 。第二行中两个变量都是Integer类型 。VB.NET支持同行声明多个变量,举例如下:
Dim a1, a2, a3 As Integer 变量初始化是另一个问题 。在VB6.0中不能同时声明和初始化变量,而VB.NET则支持这个特性 。
Dim name As String = "Mahesh"System.Console.Write(name) 声明常量也可以照此办理:Const DT_COUNT As Integer = 23 New关键字 。在VB.NET中,New关键字用于创建对象 。由于数据类型是对象,所以New关键字用以创建一个数据类型对象 。
Dim i As Integer = New Integer()i = 10System.Console.WriteLine(i.ToString()) 代码块级别支持 。像C一样,VB.NET支持代码块级别的作用域检查 。在语句块中声明的变量只在块内有效 。
For i = 1 To 10Dim p As LongSystem.Console.WriteLine(i.ToString())NextSystem.Console.WriteLine(p.ToString()) 这段代码在VB.NET中会得到一个编译错误,因为p在For..Next语句块之外不可访问 。在VB6.0中这段代码可以通过 。
改进了的类型安全
在VB6.0中,当你声明一个对外部过程的引用时 , 可以指定任意类型的参数为As Any 。Any关键字禁止了类型检查,允许任意数据类型传入和返回 。
VB.NET不支持Any关键字 。你必须指定每个参数和返回值的数据类型 。数组VB.NET对数组作了明显的改动 。
数组范围 。在VB.NET中,你需要格外留意数组范围问题 。VB6.0默认数组下界为0 , 故数组中的元素数量等与数组上界值加一 。下面的数组界限从A(0)到A(10),共有11个元素:
Dim A(10) As Single可以使用Option Base改变下界值为1 。在VB.NET中 , 数组和C一样,下界值为0 , 不支持Option Base 。注意:MSDN文档指出数组只能包括与其尺寸相等的元素数量,例如:Dim A(10) As Integer 只能包括10个元素(从A(0)到A(9)),但在编译下面这段代码时我发现它运行良好,看起来数组中容纳了11个元素 。
Dim A(10) As Integer A(0) = 12 A(2) = 24 A(10) = 23 System.Console.WriteLine(A(0).ToString()) System.Console.WriteLine(A(10).ToString())System.Console.WriteLine(UBound(A).ToString()) System.Console.WriteLine(LBound(A).ToString()) Lbound和Ubound分别返回 0与10 。ReDim和Fixed Array 。你可以在VB6.0中指定固定长度的数组 。
Dim ArrWeekDays(0 To 6) As Integer
这里的ArrWeekDays数组是固定长度的,不能用ReDim语句改变长度 。VB.NET不支持固定长度数组,所以ReDim总是有效 。
可以用下面两种方式声明数组: Dim ArrWeekDays(6) As IntegerDim ArrWeekDays() As Integer = {1, 2, 3, 4, 5, 6} ReDim语句 。在VB6.0中,ReDim用于初始化动态数组 。在VB.NET中你不能把它当作声明用 。ReDim只能用于改变数组长度 , 不过不能改变数组维度 。
Variant对阵ObjectVB6.0中的Variant数据类型能存储任意类型变量,VB.NET中Object具备相同能力 。
算术操作符VB.NET支持类似C的快捷方式 。下面的表格显示了常规操作与快捷操作的不同之处 。快捷方式也可用于*、/、|、等操作符 。
操作符常规语法快捷方式加法A = A 5A=5 减法A = A – 5A -5固定长度字符串
在VB6.0中,可以在声明字符串时指定其长度 。VB.NET不支持固定长度字符串 。
布尔操作符VB6.0中的And、Or或是Xor语句是按位操作符 。而在VB.NET中,它们是布尔操作符 。执行这些操作将返回true或false 。VB.NET引入新操作符来完成按位操作 。
操作符描述BitAnd按位AndBitOr按位OrBitXor按位XorBitNot按位Not结构与自定义类型在VB6.0中 , 你使用Type…End Type语句块创建结构或自定义类型 。例如:
Type StdRec
StdId As Integer
StdName As String End Type
VB.NET引入新的语法:Structure 。Type…End Type不再被支持 。Structure…End Structure与C用法相同 。可以指定结构中每个元素的可访问域,如Public、Protected、Friend、Protected Friend、Private等 。例如:
Structure StdRec
Public StdId As Integer Public StdName As String
Private StdInternal As String End StructureVB.NET中的Structures就像类一样,也可以拥有方法和属性 。New和Nothing关键字VB6.0中,AS New和Nothing关键字用于声明一个对象并初始化它 。VB.NET不支持隐式创建对象 。如前所言,甚至连数据类型都是对象 。你可以采用以下两种方法创建数据类型或对象: Dim i As Integer Dim i As Integer = New Integer() // Do something if i = Nothing Then End If 不支持Set语句VB6.0使用Set语句指派对象 。例如:Set myObj = new MyObjectSet a = b在VB.NET中,不需要使用Set指派对象 。例如:myObj = new MyObj()a = b过程(procedure)语法的变化在VB.NET中过程语法有了很多变化 。例如类似C的过程调用方式、ByVal(传值)为默认类型、Optional关键字、return语句等等 。类似C的过程调用方式 VB6.0允许不用加圆括号调用过程(sub) 。不过,用Call语句调用函数或sub时 , 一定要使用圆括号 。例如:Dim I as IntegerCall EvaluateData(2, i) EvaluateData 2, i 在VB.NET中,所有的方法调用都需要圆括号,而Call语句则是可选的 。ByVal是默认参数类型在VB6.0中,在调用函数或sub时ByRef(传址)是默认类型 。那意味着所有改变将反映到传入的变量 。VB.NET改变了这种方式 。现在,默认的参数类型是ByVal(传值) 。Optional关键字VB6.0使用Optional关键字可用来让用户决定传入一个默认值,之后在调用IsMissing函数判断参数是否有效 。而在VB.NET中,每个可选参数必须声明其默认值,无需调用IsMissing函数 。例如:Sub MyMethod(Optional ByVal i As Integer = 3)
Return语句VB.NET的Return语句与C相似 。使用Return语句把控制权从过程返还给调用者 。在VB6.0中,Return语句与GoSub语句一起使用 。VB.NET不再支持GoSub语句 。流程控制的改变下面是VB.NET对流程控制语句的修改:1. GoSub不再受到支持 。2. Call、Function和Sub语句均可用于调用过程 。3. On ... GoSub和On ... GoTo语句不再受支持 。可以使用Select Case语句来替代 。4. While ... Wend语句现在改为While…End While语句 。不再支持Wend关键字 。小结 Visual Basic .NET是.NET版本的Visual Basic,已经从根本发生了变化!通过本文你了解到VB6.0和VB.NET的区别是很大的,可以说根本就是两种不同的语言,因为它们的内核发生了变化,VB6.0是基于COM而vb.net是基于.net框架的 , 因为这个变化,所以在构造类时也发生了根本性的变化 。
关于自制文本编辑器vb或.net将打开过的文件记录在XML文件或注册表中,需要时读取记录并使用Menu.Items集合Add或Remove
VB.NET窗体间的数据传递在编写VB.Net windows应用程序的时候我们经常会遇到这种问题,怎么样在两个窗体间传递数据呢?例如,用VB.Net做一个文本编辑器,里面有一个搜索功能(即搜索我打开的文本里面的文字),点搜索则弹出搜索对话框,输入要搜索的内容,然后确定,就可以搜索到我打开的文本里面的文字了,这里就用到了两个窗体间的相互通信 。我查看了相关的资料想了想,得出一些想法和方法 。
也许有的人会觉得这个很简单呀 。假如主框架为Form1,打开的搜索对话框是Form2.直接在Form2类中申明一个Form1实例:dim f1 as new Form1然后就可以通过f1来调用Form1中的域和函数了 。其实不是这样的,你申明的新的Form1实例不是原来的那个Form1对象了 , 这样操作的是新的Form1中的域和函数,和最先打开的Form1是没有关系的 。
那应该如何来完成两个窗体的通讯呢?我们要做的是把当前的Form1实例传递给Form2,如果是这样的话,问题就很好解决了 。
方法1:首先,我们在Form2中定义:
Private mF_Form As Form1
我们更改Form2的构造函数为有参数的
Public Sub New(ByVal form As Form1)
MyBase.New()
'该调用是 Windows 窗体设计器所必需的 。
InitializeComponent()
Me.mF_Form = form
'在 InitializeComponent() 调用之后添加任何初始化
End Sub
在Form1中,我在 要用到Form2的地方申明如下:
Dim f1 As New Form2(Me)
这里的me指的就是Form1当前的实例,也就是把当前Form1的实例通过Form2的构造函数传递给Form2类(其实在网上看到过比较蠢的方式,就是在构造函数里面传递要传递的信息如:字符串或是数字等,这样做很有局限性,不能传递其他的 , 所有我们可以直接传递实例,来完成传递更多的信息 。)
这样在Form2中使用myForm 就可以对原来的Form1窗口进行操作了 。但是你要把要操作的Form1中的域和函数定义成public形式的(这样可能不安全),此时的myForm就是真正的最开始打开的Form1了,你可以用这个实例来进行两个窗体的通讯了 。
方法2:其实VB.Net中提供了窗体间进行通讯的现成的属性,呵呵 , 我们能想到的,微软也想到了,他们创造的语言其实确实可以说是人性化了 。
在Form1类中申明Form2时用如下代码:
Dim f2As New Form2'类Form2中的构造函数不改,还是无参的
f2.owner=me
也可以使用函数的方法 , 给当前实例添加一个附属窗口代码:Me.AddOwnedForm(f2)
在Form2类的定义中写如下代码:
dim f1 as Form1=me.owner
这样f1对应的就是原来的Form1的实例了,也就可以用这个进行通讯了 。但是还是要把不同类之间访问的域和函数定义成public,哎,安全确实是一个问题?。?
vb编辑器就是.net吗?我觉得你概念上有问题 。
首先编辑器只是一类软件的名称,即便你说是VB编辑器,可以是微软出的VB6等IDE,我也可以说系统自带的记事本也是VB编辑器,总之一般只要能编写源代码的就可以叫编辑器 。
而.Net也只是一个.Net Framework框架而已,.Net包括很多技术,不光是编程技术 。
最后,你是不是要问VB6和VB.Net的关系?
如果是这个问题,我可以告诉你VB6是上个世纪的IDE,而VB.Net是Visual Studio大集成环境里面的一种而已,像C,C#也集成在里面 。他们两个可以说除了语法还比较相像以外,没有一点关系了,编程思想不同,编译原理不同,运行机制不同,总之就是整个架构都不同,不要觉得VB.Net就是VB6的本世纪升级版 。
关于文本编辑器vb.net和文本编辑器手机版的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读