VB.net Sub Main() 过程

当你的VB应用程序开始执行以后,.net运行库使用你VB代码中的哪一部分,作为程序的起点?

如果你在visual studio.net中创建一个vb.net的windows窗口工程,在你编译时,visual studio.net会自动地给你的程序的可执行文件中加入什么呢?

哪里是最后的地方,你去控制你程序的飞溅窗口,登陆窗口,主窗口还有应用程序级别数据和行为?

上面所有的问题都可以回答为:the Sub Main() procedure

作为一个visual Studio.net的新手,这是一个在创建VB.net窗口程序时很容易忽略的一个很重要的问题。如果你没有意识到需要Sub Main(),不加入Sub Main()代码,visual Studio 很奇怪地在你编译你的应用程序时自动会加入一个Sub Main()方法到你的程序的可执行文件中去。你从来不会发现它。

这个自动加入Sub Main()方法是非常好的当你在学怎么写一个hello world应用程序。但是这个特性将会阻碍你开始写一个真正的应用程序。

这篇文章将会解释怎么样创建你自己的Sub Main() procedure 和怎么用它去控制你的应用程序的开始和关闭

Sub Main() Procedure 示例代码

<STAThread()> _

Shared Sub Main()

' Declare a variable named frm1 of type Form1.

Dim frm1 As Form1

' Instantiate (create) a new Form1 object and assign

' it to variable frm1.

frm1 = New Form1()

' Call the Application class' Run method

' passing it the Form1 object created above.

Application.Run(frm1)

End Sub

上面这段代码展示了一个简单的Sub Main() procedure,当你加入一个窗口到你的代码中时,它会被应用。一旦加了这段代码,Visual Studio.net就会意识到这个窗口有Sub Main() procedure代码,在编译时就会用这段代码代替它自动加入的那段Sub Main() procedure。

测试代码

1:新建一个VB.NET 窗口应用程序工程。

1:在代码编辑窗口打开窗口1的代码

3:复制文章中下面的代码,粘贴到Form1.

Public Class Form1

Inherits System.Windows.Forms.Form

Windows Form Designer generated code

<STAThread()> _

Shared Sub Main()

' Declare a variable named frm1 of type Form1.

Dim frm1 As Form1

' Instantiate (create) a new Form1 object and assign

' it to variable frm1.

frm1 = New Form1()

' Call the Application class' Run method

' passing it the Form1 object created above.

Application.Run(frm1)

End Sub

End Class

4:运行程序。

你的Sub Main() 代码为程序提供了一个入口点。Form1将要被打开,如果你加入了Sub Main()代码。不同在于你自己编写的Sub Main() procedure代替了Visual Studio.net给你自动加入的代码

你已经迈出了走向掌握使用Sub Main() procedure的第一步。

Move Sub Main() to a Class

下一篇文章会解释怎么样把Sub Main() procedure 移动到一个类中。

加入一个叫AppMgr的VB.NET类到你的工程中去。

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强制返回为文本 --------------------------...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办法, Format 或者FormatDateTime 竟然结果和...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace My ‘全局错误处理,新的解决方案直接...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用的爽呀,这篇文章写与2011年,看来我以前没...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选中的单元格进行处理 Dim m As Range, t...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integ...