.NET Framework
Moduli VB
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.