VB.NET Express 初探






3.03/5 (11投票s)
2004年7月21日
8分钟阅读

96986

235
探索 Whidbey VS.NET 2005 中的 VB.NET Express 产品能提供什么。
引言
在这篇文章中,我将尝试向您解释 VB.NET Express 2005 Beta 能提供什么。希望您能从中有所收获。
我首先创建了一个新的 Windows 窗体项目。这样做非常简单。文件 -> 新建项目,然后选择 Windows 应用程序。VB.NET Express 会询问项目名称,但不会询问保存位置。有趣的是,VB.NET Express 允许我在不先保存的情况下运行我的解决方案。据我回忆,VS 2003 会强制您先保存您的应用程序。我认为它使用了临时文件夹。之后,当您保存项目时,它会询问您要保存在哪里。您也可以在此处更改项目名称。
与 VS.NET 2003 一样,此操作会创建一个 Form1.vb。创建项目后,您会在下方看到解决方案资源管理器。
按照我的习惯,我将这个 Form1.vb 改成了更有意义的名字。由于我决定尝试“My
”功能,并且我知道从博客文章中My
功能使文件操作更轻松,所以我决定将其重命名为 frmWriteTextToFile.vb。然后,我按照我的习惯查看了代码,也重命名了类声明。
惊喜!惊喜!
当您重命名类文件时,类会自动在文本文件中重命名。我创建了一个新类来测试此功能。我从 Windows 窗体对象调用了这个类,然后重命名了类。我看到的是,所有调用者也都被重命名了。我还能说什么呢,非常好。我一直对为类决定合适的名称感到烦恼,因为我知道以后重命名它们会很麻烦。如果您的源代码管理能够处理重命名文件(Source Safe 6.0d 不能),拥有这样的功能将非常棒。
我添加了这个简单的方法,并编写了以下代码:
Public Shared Sub WriteToFile(ByVal fileToBeWritten As String, _
ByVal TextToBeWritten As String)
If (My.Computer.FileSystem.FileExists(fileToBeWritten)) Then
My.Computer.FileSystem.WriteAllText(fileToBeWritten, _
TextToBeWritten, True)
Else
My.Computer.FileSystem.WriteAllText(fileToBeWritten, _
TextToBeWritten, False)
End If
End Sub
此代码将一个字符串写入文本文件。如果文件存在,它只是将您的字符串追加到文件末尾;否则,它会创建一个新文件并将您的字符串写入该文件。写入文件就像这样简单。与 C# 版本或 1.1 VB.NET 版本相比。
编写完这个类之后,我添加了一个用于 filetobeWritten
的 TextBox,一个用于 textToBeWritten
的多行 TextBox,以及一个用于实际调用 WriteToFile
方法的按钮。当我更改这些对象的名称时,我看到了 IDE 的又一项改进。VB.NET 现在有了 C#.NET 2003 那样的事件选项卡。如果您是从 VB6 转到 VB.NET,您可能不需要它们。但我首先学习了 C#,然后才开始使用 VB.NET。由于我同时使用 VB 和 C#,所以我会在 IDE 中寻找这样的东西。在我看来,除了语言更改之外,IDE 在编辑器中应该支持相同的功能。引用是 C#.NET 2003 具有而 VB.NET 2003 没有的另一项功能。它也实现得更好。
您可以在“查找符号结果”窗口中看到引用。
在 C# 中,您可以转到调用者,但在 C# 中,您可以看到所有调用者。
在同一个菜单中,“插入注释”与 C# 的注释能力或 VBCommenter 相同。可以通过按三次(')或通过此菜单来实现。重命名是重构中的重命名。将此方法重命名为其他名称,所有调用者都会如我之前所述被更改。好的一点是,当您在调用者代码中重命名时,它也有效。我曾在一场 Visual Basic TechED 的演示中读到过重构重命名已经实现,并且他们正在研究其他重构。重命名肯定有效。我希望在 Whidbey VB.NET 2005 中看到其他重构。
他们还让书签变得可用。在 VS.NET 2003 中,书签只能在一个文件中工作。在这里,它们可以跨文件工作。非常好。
有“文档中的下一个书签”和“文档中的上一个书签”。但我认为除非您有非常大的文件(1K 或更多行),否则它们不会被经常使用。对于这样的文件,您应该考虑将其拆分成更多的小文件。
当我尝试从 Windows 窗体调用我的示例方法时,我看到了另一个新功能。VB.NET Express 有一个非常好的智能技巧,正如您在下面的图片中看到的。
“公共”选项卡仅显示我编写的方法。“所有选项卡”显示了方法,我的类继承自 object。
在解决方案资源管理器中,转到 MyProject 并打开它。您会看到为您的项目设计的更好的菜单。
选择“程序集信息”。
在此对话框中,您将能够更好地更改您的程序集信息。在 VS 2003 中,所有这些都只能通过 assembly.info 文件进行更改。在此处选择“查看代码”。您会在 MyProject\MyEvents.vb 文件中看到以下代码:
Namespace My
Partial Friend Class MyApplication
'Use the editor window dropdowns in the Application pane of
' the Project Designer to handle MyApplication Events
'
'Startup: Raised when the application starts, before the
'startup form is created.
'Shutdown: Raised after all application forms are closed.
'This event is not raised if the application
'is terminating abnormally.
'UnhandledException: Raised if the application encounters an
'unhandled exception.
'StartupNextInstance: Raised when launching a single-instance
'application and the application is already active.
'NetworkAvailabilityChanged: Raised when the network connection is
'connected or disconnected.
End Class
End Namespace
您可以在此处使用常规的事件添加方式添加应用程序范围的事件。
Private Sub MyApplication_Startup(ByVal sender As Object, _
ByVal e As System.Windows.Forms.StartupEventArgs) Handles Me.Startup
MessageBox.Show("Hello World")
End Sub
一段简单的代码,但它仅演示了一个功能。
在此之后,VB.NET Express 向我表明它是一个 Beta 产品。
好吧,我收回关于重命名的话。似乎即使我将 Form1
重命名为 frmWriteTextToFile
,VB.NET Express 中仍存在一些对 Form1
的引用。此异常是由于我尝试将我的闪屏设置为 frmWriteTextToFile
而产生的。我确信这些问题将在正式产品中得到解决。我通过这种方式解决了这个问题。在解决方案资源管理器中,显示所有文件。
打开 MyApplication.myapp。这是一个 XML 文件。MyApplication.vb 是从该 XML 文件自动生成的 VB 文件。我首先尝试更改 MyApplication.vb 中的这一行:
<System.Diagnostics.DebuggerStepThrough()> _
Protected Overrides Sub OnCreateMainForm()
Me.MainForm = My.Forms.Form1
End Sub
但由于此文件是自动生成的,当您更改该行时,它会不断返回
<MainForm>VB.Net ExpressArticle.VB.Net
ExpressArticle.WindowsApplication1.Form1</MainForm>
在 MyApplication.myapp 中。烦人的 Form1
错误将会消失。如果您有两个窗体,并且想更改哪个窗体首先启动,那么这就是实现方式。
当您设置显示所有文件时,您会发现对于每个 Windows 窗体对象,都有三个类。例如,对于 frmWriteTextToFile.vb,您还有 frmWriteTextToFile.Designer.vb 和 frmWriteTextToFile.resx。打开 frmWriteTextToFile.Designer.vb,您会在类文件中看到此声明:
Public Partial Class frmPerson
Inherits System.Windows.Forms.Form
这个文件是部分类。在 Whidbey 和 VB.NET Express 中,您可以拥有一个拆分到多个文件的类。VB.NET Express 将自动生成的代码存储在此部分文件中,而不是
#region "Visual Studio Generated Code"-#endregion
在“我的项目”菜单中,再次有一个“编译器”选项卡。在此选项卡中,您可以将“Option Strict”选项设置为 ON/OFF/Custom。
能够更改一些“Option Strict”选项很好。我是一个“Option Strict”的拥护者。但有时我不得不关闭“Option Strict”因为遗留代码。修正大量正在工作的代码中的错误似乎太多了。这样,我至少可以稍微减小错误范围。
一个小的补充。
这些补充是不言自明的,但我认为非常方便。
在编辑器中代码行的第二个点击。
选择“插入代码片段”。
选择“Visual Basic Language”。
选择“初始化数组”。这段代码会出现:
' Declare and initialize a one-dimensional array.
Dim oneDimArray() As Char = {"X"c, "Y"c, "Z"c}
' Declare and initialize a two-dimensional array.
Dim twoDimArray(,) As Double = {{5.8, 6.6}, {7.4, 8.2}}
'' Declare and initialize a jagged array.
Dim jaggedArray()() As Integer = {New Integer() {1, 2}, New Integer() {3, 4}}
关于代码片段的有趣之处在于,选择项会根据您插入它们的位置而变化。我的意思是,上下文菜单中显示的代码片段会根据您所在的位置而变化。当您在 sub 或 function 内部时,会显示与在类主体内部时不同的代码片段。这些代码片段非常方便。大多数时候,我忘记了某项实现的细节,不得不搜索帮助来查找一些琐碎的事情。这些将是非常好的生产力增强器。我将在文章末尾提供一个关于如何添加代码片段的链接。
在代码片段中,我找到一个例子,我认为它是一个通用示例(目前我只知道 C# 的泛型和 C++ 的模板。我将纠正这种情况)。我对它进行了一些修改。
Public Class GenTry(Of entryType)
Protected aList As ArrayList = New ArrayList(1)
Public Sub Add(ByVal e As entryType)
aList.Add(e)
End Sub
Public Function GetF() As entryType
Return CType(aList.Item(0), entryType)
End Function
End Class
客户端函数。
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Clic
Dim strA As GenTry(Of String) = New GenTry(Of String)
strA.Add("alo")
MessageBox.Show(strA.GetF)
Dim IntB As GenTry(Of Integer) = New GenTry(Of Integer)
IntB.Add(21)
MessageBox.Show(IntB.GetF().ToString)
End Sub
正如您所见,我可以将字符串和整数添加到同一个集合代码中。并且如果我尝试将除 Integer 之外的其他内容添加到 IntB
,以及将除 String 之外的其他内容添加到 strA
,编译器会报错。
“编辑并继续”在 VB.NET Express 中也有效。尽管存在一些怪癖。
我错过的一些功能。
- “文本”菜单中没有“格式化文本”选项。我经常使用它。
- 帮助目前不是很好。在我写这篇文章的时候,我还没有安装 Express 附带的 MSDN 帮助,因为它在我的闪存盘上坏了。我想探索 VB 的泛型,但我在 VB 帮助中没有找到任何代码示例。我希望当我安装帮助之后。
- 尽管我的 PC 上安装了 SQLExpress,但我无法连接到它。我认为这是因为我同时拥有 SQL Server 2000 和 SQLExpress。
当然,我无法探索 VB.NET Express 所能提供的一切。但从我所见来看,对于一个免费工具来说,它非常好。微软宣布 Express 产品将免费使用。
链接
- 在 Whidbey 中创建您的代码片段.
- Express 产品正常下载。这个博客只关于 Express 产品。