.NET Framework
VB-formulär
Sök…
Hej världen i VB.NET-formulär
Så här visar du en meddelanderuta när formuläret har visats:
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
Belastning () kommer att kallas först, och endast en gång, när formen först laddas. Show () kommer att ringas varje gång användaren startar formuläret. Aktivera () kommer att ringas varje gång användaren gör formuläret aktivt.
Load () kommer att köras innan Show () kallas, men varnas: att ringa msgBox () i show kan göra att msgBox () körs innan Load () är klar. Det är i allmänhet en dålig idé att bero på händelsebeställning mellan Load (), Show () och liknande.
För nybörjare
Vissa saker som alla nybörjare bör veta / göra som hjälper dem att få en bra start med VB. Net:
Ställ in följande alternativ:
'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
Använd &, inte + för strängkoppling. Strängar bör studeras i detalj eftersom de används allmänt.
Spendera lite tid på att förstå värdet och referenstyper .
Använd aldrig Application.DoEvents . Var uppmärksam på "Varning". När du når en punkt där detta verkar vara något du måste använda, fråga.
Dokumentationen är din vän.
Former timer
Komponenten Windows.Forms.Timer kan användas för att tillhandahålla användarinformation som inte är tidskritisk. Skapa ett formulär med en knapp, en etikett och en timerkomponent.
Det kan till exempel användas för att visa användaren tid på dagen regelbundet.
'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
Men denna timer är inte lämplig för timing. Ett exempel skulle vara att använda den för en nedräkning. I det här exemplet kommer vi att simulera en nedräkning till tre minuter. Detta kan mycket väl vara ett av de mest tråkigt viktiga exemplen här.
'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
Efter att knappen 1 har klickats passerar det cirka tre minuter och etikett1 visar resultaten. Visar label1 180? Antagligen inte. På min maskin visade den 182,5!
Anledningen till avvikelsen finns i dokumentationen "Windows Forms Timer-komponenten är entrådad och är begränsad till en noggrannhet på 55 millisekunder." Det är därför det inte ska användas för timing.
Genom att använda timern och stoppuret lite annorlunda kan vi få bättre resultat.
'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
Det finns andra tidtagare som kan användas efter behov. Denna sökning borde hjälpa i det avseendet.