Szukaj…


Witaj świecie w formularzach VB.NET

Aby wyświetlić okno komunikatu po wyświetleniu formularza:

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 () zostanie wywołany jako pierwszy i tylko raz, gdy formularz zostanie załadowany jako pierwszy. Show () będzie wywoływany za każdym razem, gdy użytkownik uruchomi formularz. Aktywacja () będzie wywoływana za każdym razem, gdy użytkownik aktywuje formularz.

Load () wykona się przed wywołaniem Show (), ale należy go ostrzec: wywołanie msgBox () w show może spowodować, że msgBox () wykona się przed zakończeniem Load (). Zasadniczo złym pomysłem jest poleganie na kolejności zdarzeń między Load (), Show () i podobnymi.

Dla początkujących

Niektóre rzeczy, które wszyscy początkujący powinni wiedzieć / robić, które pomogą im dobrze zacząć od VB .Net:

Ustaw następujące opcje:

'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

Użyj &, a nie + do łączenia łańcuchów. Ciągi powinny być badane bardziej szczegółowo, ponieważ są szeroko stosowane.

Poświęć trochę czasu na zrozumienie typów wartości i odniesień .

Nigdy nie używaj Application.DoEvents . Zwróć uwagę na „Uwaga”. Kiedy osiągniesz punkt, w którym wydaje się, że musisz tego użyć, zapytaj.

Dokumentacja jest twoim przyjacielem.

Forms Timer

Składnika Windows.Forms.Timer można użyć do dostarczenia informacji o użytkowniku, które nie są krytyczne czasowo. Utwórz formularz z jednym przyciskiem, jedną etykietą i składnikiem Timer.

Na przykład może być używany do okresowego pokazywania użytkownikowi pory dnia.

'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

Ale ten zegar nie nadaje się do pomiaru czasu. Przykładem może być użycie go do odliczania. W tym przykładzie symulujemy odliczanie do trzech minut. To może być jeden z najbardziej nudnych przykładów tutaj.

'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

Po kliknięciu przycisku 1 mija około trzech minut, a etykieta 1 pokazuje wyniki. Czy etykieta 1 pokazuje 180? Prawdopodobnie nie. Na mojej maszynie pokazało 182,5!

Przyczyną rozbieżności jest dokumentacja: „Składnik Windows Forms Timer jest jednowątkowy i ma dokładność do 55 milisekund”. Dlatego nie należy go używać do pomiaru czasu.

Używając timera i stopera nieco inaczej, możemy uzyskać lepsze wyniki.

'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

Istnieją inne timery, których można użyć w razie potrzeby. To poszukiwanie powinno w tym pomóc.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow