Ricerca…


Ciao mondo in moduli VB.NET

Per mostrare una finestra di messaggio quando il modulo è stato mostrato:

Public Class Form1
    Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
        MessageBox.Show("Hello, World!")
    End Sub
End Class
To show a message box before the form has been shown:

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        MessageBox.Show("Hello, World!")
    End Sub
End Class

Load () verrà chiamato prima e solo una volta, quando il modulo viene caricato per la prima volta. Show () verrà chiamato ogni volta che l'utente avvia il modulo. Activate () verrà chiamato ogni volta che l'utente attiva il modulo.

Load () verrà eseguito prima che venga chiamato Show (), ma attenzione: chiamare msgBox () in show può causare che msgBox () venga eseguito prima che Load () abbia finito. In genere è una cattiva idea dipendere dall'ordine degli eventi tra Load (), Show () e simili.

Per principianti

Alcune cose che tutti i principianti dovrebbero sapere / fanno che li aiuteranno ad avere un buon inizio con VB. Net:

Imposta le seguenti opzioni:

'can be permanently set
' Tools / Options / Projects and Soluntions / VB Defaults
Option Strict On
Option Explicit On
Option Infer Off

Public Class Form1

End Class

Usa &, non + per la concatenazione di stringhe. Le stringhe dovrebbero essere studiate in dettaglio in quanto sono ampiamente utilizzate.

Dedica un po 'di tempo alla comprensione del valore e dei tipi di riferimento .

Non utilizzare mai Application.DoEvents . Prestare attenzione a 'Attenzione'. Quando raggiungi un punto in cui questo sembra qualcosa che devi usare, chiedi.

La documentazione è tua amica.

Timer delle forme

Il componente Windows.Forms.Timer può essere utilizzato per fornire all'utente informazioni che non sono critiche dal punto di vista del tempo. Crea un modulo con un pulsante, un'etichetta e un componente Timer.

Ad esempio potrebbe essere usato per mostrare periodicamente all'utente l'ora del giorno.

'can be permanently set
' Tools / Options / Projects and Soluntions / VB Defaults
Option Strict On
Option Explicit On
Option Infer Off

Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Button1.Enabled = False
        Timer1.Interval = 60 * 1000 'one minute intervals
        'start timer
        Timer1.Start()
        Label1.Text = DateTime.Now.ToLongTimeString
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Label1.Text = DateTime.Now.ToLongTimeString
    End Sub
End Class

Ma questo timer non è adatto per i tempi. Un esempio potrebbe usarlo per un conto alla rovescia. In questo esempio simuleremo un conto alla rovescia per tre minuti. Questo potrebbe essere uno degli esempi più noiosamente importanti qui.

'can be permanently set
' Tools / Options / Projects and Soluntions / VB Defaults
Option Strict On
Option Explicit On
Option Infer Off

Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Button1.Enabled = False
        ctSecs = 0 'clear count
        Timer1.Interval = 1000 'one second in ms.
        'start timers
        stpw.Reset()
        stpw.Start()
        Timer1.Start()
    End Sub

    Dim stpw As New Stopwatch
    Dim ctSecs As Integer

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        ctSecs += 1
        If ctSecs = 180 Then 'about 2.5 seconds off on my PC!
            'stop timing
            stpw.Stop()
            Timer1.Stop()
            'show actual elapsed time
            'Is it near 180?
            Label1.Text = stpw.Elapsed.TotalSeconds.ToString("n1")
        End If
    End Sub
End Class

Dopo aver fatto clic sul pulsante 1, passano circa tre minuti e label1 mostra i risultati. Label1 mostra 180? Probabilmente no. Sulla mia macchina ha mostrato 182,5!

Il motivo della discrepanza è nella documentazione: "Il componente Timer di Windows Form è a thread singolo ed è limitato a una precisione di 55 millisecondi." Questo è il motivo per cui non dovrebbe essere usato per i tempi.

Utilizzando il cronometro e il cronometro in modo leggermente diverso possiamo ottenere risultati migliori.

'can be permanently set
' Tools / Options / Projects and Soluntions / VB Defaults
Option Strict On
Option Explicit On
Option Infer Off

Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Button1.Enabled = False
        Timer1.Interval = 100 'one tenth of a second in ms.
        'start timers
        stpw.Reset()
        stpw.Start()
        Timer1.Start()
    End Sub

    Dim stpw As New Stopwatch
    Dim threeMinutes As TimeSpan = TimeSpan.FromMinutes(3)

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        If stpw.Elapsed >= threeMinutes Then '0.1 off on my PC!
            'stop timing
            stpw.Stop()
            Timer1.Stop()
            'show actual elapsed time
            'how close?
            Label1.Text = stpw.Elapsed.TotalSeconds.ToString("n1")
        End If
    End Sub
End Class

Ci sono altri timer che possono essere utilizzati secondo necessità. Questa ricerca dovrebbe aiutare in tal senso.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow