2013-01-13 123 views
20

當我創建在C#WinForms應用程序,則輸出類型是Windows Application和獲得帶有一個static void Main(),我可以使用來處理命令行參數等一個program.cs ...如何在VB.Net winforms應用程序中找到main()入口點?

然而,當我創建一個等效項目爲VB,應用程序類型是Windows Forms Application,我不得不選擇一個啓動窗體。

是否有一個等價的機制來運行我自己的代碼,然後決定在VB.Net中顯示哪種形式?我假設存在相同的代碼,但自動生成並隱藏在某處?如果是這樣,在哪裏?

+0

可能重複的[使用子Main或形式啓動對象啓動VB.NET GUI應用程序?](http://stackoverflow.com/questions/311346/start-vb-net-gui-app-using- sub-main-or-form-startup-object) – shf301

+1

這討論了爲什麼應該這樣做,它沒有說如何去做...... – Basic

+0

@Basic你是否得到它的參數?我用答案中提到的步驟。但是當我試圖從cmd傳遞參數時,它不起作用。我有我的主作爲公共子主(ByVal參數爲字符串()),然後打印每個數組中的每個元素...使用Console.WriteLine ...我從cmd運行應用程序,但不打印參數我通過了。請任何幫助 – CodeEngine

回答

36

在VB中,您需要手動創建子主體,因此我通常會創建一個名爲Program的新模塊。

作爲一個非常基本的設置,你需要添加下面的代碼。

Public Sub Main() 

    Application.EnableVisualStyles() 
    Application.SetCompatibleTextRenderingDefault(False) 
    Application.Run(New Form1) 

End Sub 

一旦你做到了這一點去的項目設置的應用程序選項卡,取消「啓用應用程序框架」設置,然後從下拉下啓動對象選擇新的Sub Main過程。

然後,您可以在您的程序在Application.Run行之前打開其主窗體之前放置任何啓動代碼。

希望幫助

+0

非常棒,這就是我一直在尋找的。 – Basic

1

如果你的應用程序只有一個表格你可能只需輸入子新()和Visual Studio將自動生成,其執行第一此方法存根。無需更改項目設置。

Public Sub New() 
    MyBase.New() 

    'This call is required by the Windows Form Designer. 
    InitializeComponent() 

    'Add any initialization after the InitializeComponent() call 
    '==> Put your pre-execution steps here. 
End Sub 
+2

這不是問題,這是與啓動窗體綁定的,他希望代碼能夠在啓動窗體之前運行。接受的答案是正確的。 –

+0

@MarkHall是正確的。注意'Sub Main()'(應用程序的初始入口點)和'Sub New()'(構造函數 - 在這種情況下 - 表單)之間的區別。前者在開始任何其他事情之前執行(無形式,消息泵等),並允許您處理命令行參數,選擇視覺樣式等。 – Basic

+0

是的,我沒有認識到原來的問題是處理多個表單。我編輯了上面的回覆,以澄清Sub New()僅在您的應用具有單個表單時提供預初始化訪問。謝謝您的意見。 – Jeff