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.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow