Zoeken…


Hallo wereld in VB.NET-formulieren

Een berichtvenster weergeven wanneer het formulier is weergegeven:

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 () wordt eerst en slechts eenmaal aangeroepen wanneer het formulier voor het eerst wordt geladen. Show () wordt elke keer aangeroepen wanneer de gebruiker het formulier start. Activate () wordt elke keer aangeroepen als de gebruiker het formulier actief maakt.

Load () wordt uitgevoerd voordat Show () wordt aangeroepen, maar wees gewaarschuwd: het aanroepen van msgBox () in show kan ertoe leiden dat msgBox () wordt uitgevoerd voordat Load () is voltooid. Het is over het algemeen een slecht idee om afhankelijk te zijn van de volgorde van gebeurtenissen tussen Load (), Show () en dergelijke.

Voor beginners

Sommige dingen die alle beginners moeten weten / doen die hen zullen helpen een goede start met VB .Net te hebben:

Stel de volgende opties in:

'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

Gebruik &, niet + voor tekenreeksen. Strings moeten enigszins gedetailleerd worden bestudeerd, omdat ze veel worden gebruikt.

Besteed wat tijd aan het begrijpen van waarde- en referentietypen .

Gebruik nooit Application.DoEvents . Besteed aandacht aan de 'Let op'. Vraag het wanneer u een punt bereikt waarop dit iets lijkt dat u moet gebruiken.

De documentatie is je vriend.

Formulieren Timer

De component Windows.Forms.Timer kan worden gebruikt om gebruikersinformatie te verschaffen die niet kritisch is voor de tijd. Maak een formulier met één knop, één label en een timercomponent.

Het kan bijvoorbeeld worden gebruikt om de gebruiker periodiek het tijdstip van de dag te tonen.

'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

Maar deze timer is niet geschikt voor timing. Een voorbeeld zou het gebruiken voor een aftelling. In dit voorbeeld simuleren we een aftelling tot drie minuten. Dit is misschien wel een van de meest saaiste voorbeelden hier.

'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

Nadat op knop 1 is geklikt, gaat er ongeveer drie minuten voorbij en geeft label1 de resultaten weer. Toont label1 180? Waarschijnlijk niet. Op mijn machine toonde het 182.5!

De reden voor het verschil is in de documentatie: "De Windows Forms Timer-component heeft één thread en is beperkt tot een nauwkeurigheid van 55 milliseconden." Daarom moet het niet worden gebruikt voor timing.

Door de timer en stopwatch een beetje anders te gebruiken, kunnen we betere resultaten verkrijgen.

'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

Er zijn andere timers die naar behoefte kunnen worden gebruikt. Deze zoektocht zou in dat opzicht moeten helpen.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow