2013-01-13 13 views
20

Quando creo un'applicazione WinForms in C#, il tipo di output è Windows Application e ottengo un program.cs con una static void Main() che posso usare per gestire i parametri della riga di comando, ecc ...Come trovare il punto di ingresso main() in un'app winforms VB.Net?

Tuttavia, quando creo un equivalente progetto per VB, il tipo di applicazione è Windows Forms Application e sono costretto a scegliere un modulo di avvio.

Esiste un meccanismo equivalente per eseguire il mio codice prima di decidere quale modulo visualizzare in VB.Net? Sto assumendo che lo stesso codice esista ma venga generato automaticamente e nascosto da qualche parte? Se sì, dove?

+0

possibile duplicato del [Inizia VB.NET GUI applicazione utilizzando Sub oggetto di avvio principale o la forma?] (Http://stackoverflow.com/questions/311346/start-vb-net-gui-app-using- sub-main-or-form-startup-object) – shf301

+1

Questo spiega perché dovrebbe essere fatto o meno, non dice come farlo ... – Basic

+0

@Basic Hai funzionato con i parametri? Io uso i passaggi menzionati sulla risposta. Ma quando ho provato a passare i parametri da cmd non funziona. Ho il mio Main come Public Sub Main (ByVal args As String()) e quindi stampo ogni elemento dell'array in a per ogni ... utilizzando Console.WriteLine ... Eseguo l'applicazione da cmd ma non stampo i parametri che io passo. Qualsiasi aiuto per favore – CodeEngine

risposta

36

In VB avrete bisogno di creare il vostro sub-main come se fosse così che generalmente faccio un nuovo modulo chiamato Program.

All'interno di questo, come impostazione di base, è necessario aggiungere il seguente codice.

Public Sub Main() 

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

End Sub 

Una volta fatto che vanno alla scheda applicazione delle impostazioni del progetto e deselezionare la 'Enable quadro Application' impostazione e quindi dal menu a tendina sotto oggetto di avvio selezionare la nuova procedura Sub Main.

È quindi possibile inserire qualsiasi codice di avvio che si desidera eseguire prima che il programma apra il modulo principale prima della riga Application.Run.

Speranza che aiuta

+0

Fantastico, è esattamente quello che stavo cercando. – Basic

1

Se l'applicazione ha una sola forma si può semplicemente iniziare a digitare Sub New() e Visual Studio sarà autogenerate questo stub che esegue prima. Non sono richieste modifiche alle impostazioni del progetto.

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

Questa non era la domanda, questo è legato al modulo di avvio, voleva che il codice fosse in grado di essere eseguito prima del modulo di avvio. La risposta accettata è corretta. –

+0

@MarkHall è corretto. Notare la differenza tra 'Sub Main()' (il punto di ingresso iniziale per l'applicazione) e 'Sub New()' (Il costruttore per - in questo caso - un modulo). Il primo viene eseguito prima che venga avviato qualsiasi altro elemento (nessuna forma, messaggio pump, ecc.) E consente di gestire gli argomenti della riga di comando, scegliere stili visivi e simili. – Basic

+0

Sì, non ho riconosciuto che la domanda originale riguardava più moduli. Ho modificato la mia risposta sopra per chiarire che un Sub New() fornisce solo l'accesso di pre-inizializzazione quando l'app ha un singolo modulo. Grazie per i vostri commenti. – Jeff

Problemi correlati