Suche…


Hallo Welt in VB.NET-Formularen

So zeigen Sie ein Meldungsfeld an, wenn das Formular angezeigt wurde:

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 () wird zuerst und nur einmal aufgerufen, wenn das Formular zum ersten Mal geladen wird. Show () wird jedes Mal aufgerufen, wenn der Benutzer das Formular startet. Activate () wird jedes Mal aufgerufen, wenn der Benutzer das Formular aktiviert.

Load () wird ausgeführt, bevor Show () aufgerufen wird, aber seien Sie gewarnt: Wenn Sie msgBox () in show aufrufen, kann msgBox () ausgeführt werden, bevor Load () beendet ist. Es ist im Allgemeinen eine schlechte Idee, sich auf die Reihenfolge der Ereignisse zwischen Load (), Show () und ähnlichem zu verlassen.

Für Anfänger

Einige Dinge, die alle Anfänger wissen / tun sollten, damit sie einen guten Start mit VB .Net haben:

Stellen Sie die folgenden Optionen ein:

'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

Verwenden Sie &, nicht + für die Verkettung von Zeichenfolgen. Strings sollten etwas genauer untersucht werden, da sie häufig verwendet werden.

Verbringen Sie etwas Zeit, um die Wert- und Referenztypen zu verstehen.

Verwenden Sie niemals Application.DoEvents . Achten Sie auf die 'Vorsicht'. Wenn Sie an einem Punkt angelangt sind, an dem dies etwas zu sein scheint, fragen Sie nach.

Die Dokumentation ist dein Freund.

Forms Timer

Die Windows.Forms.Timer- Komponente kann verwendet werden, um Benutzerinformationen bereitzustellen, die nicht zeitkritisch sind. Erstellen Sie ein Formular mit einer Schaltfläche, einer Beschriftung und einer Timer-Komponente.

Es könnte beispielsweise verwendet werden, um dem Benutzer die Uhrzeit periodisch anzuzeigen.

'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

Dieser Timer ist jedoch nicht für das Timing geeignet. Ein Beispiel wäre die Verwendung für einen Countdown. In diesem Beispiel simulieren wir einen Countdown von drei Minuten. Dies kann durchaus eines der langweiligsten Beispiele sein.

'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

Nach dem Anklicken von button1 vergehen ungefähr drei Minuten, und label1 zeigt die Ergebnisse. Zeigt label1 180? Wahrscheinlich nicht. Auf meiner Maschine zeigte es 182,5!

Der Grund für die Diskrepanz liegt in der Dokumentation: "Die Windows Forms-Timerkomponente ist Single-Threading und auf eine Genauigkeit von 55 Millisekunden beschränkt." Deshalb sollte es nicht für das Timing verwendet werden.

Wenn Sie den Timer und die Stoppuhr etwas anders verwenden, können wir bessere Ergebnisse erzielen.

'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

Es gibt andere Timer, die bei Bedarf verwendet werden können. Diese Suche sollte in dieser Hinsicht helfen.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow