Recherche…


Bonjour tout le monde dans les formulaires VB.NET

Pour afficher une boîte de message lorsque le formulaire a été affiché:

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 () sera appelée en premier, et une seule fois, lors du premier chargement du formulaire. Show () sera appelé à chaque fois que l'utilisateur lance le formulaire. Activate () sera appelé chaque fois que l'utilisateur active le formulaire.

Load () s'exécutera avant l'appel de Show (), mais soyez averti: l'appel de msgBox () dans show peut entraîner l'exécution de msgBox () avant la fin de Load (). C'est généralement une mauvaise idée de dépendre de l'ordre des événements entre Load (), Show () et similaire.

Pour les débutants

Certaines choses que tous les débutants doivent savoir / faire pour les aider à bien démarrer avec VB .Net:

Définissez les options suivantes:

'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

Utilisez &, pas + pour la concaténation de chaînes. Les chaînes doivent être étudiées en détail car elles sont largement utilisées.

Passez du temps à comprendre les types de valeur et de référence .

N'utilisez jamais Application.DoEvents . Faites attention à la "Attention". Lorsque vous atteignez un point où cela semble être quelque chose que vous devez utiliser, demandez.

La documentation est votre ami.

Minuteur de Formulaires

Le composant Windows.Forms.Timer peut être utilisé pour fournir à l'utilisateur des informations qui ne sont pas critiques en termes de temps. Créez un formulaire avec un bouton, une étiquette et un composant Timer.

Par exemple, il pourrait être utilisé pour montrer à l'utilisateur l'heure de la journée périodiquement.

'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

Mais cette minuterie n'est pas adaptée au timing. Un exemple serait de l'utiliser pour un compte à rebours. Dans cet exemple, nous allons simuler un compte à rebours de trois minutes. Cela pourrait très bien être l'un des exemples les plus ennuyeux ici.

'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

Après avoir cliqué sur button1, environ trois minutes passent et label1 affiche les résultats. Est-ce que label1 montre 180? Probablement pas. Sur ma machine, il y avait 182,5!

La raison de cette différence se trouve dans la documentation, "Le composant Windows Forms Timer est à thread unique et sa précision est limitée à 55 millisecondes." C'est pourquoi il ne faut pas l'utiliser pour le chronométrage.

En utilisant un peu le chronomètre et le chronomètre, nous pouvons obtenir de meilleurs résultats.

'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

Il existe d'autres minuteries qui peuvent être utilisées selon les besoins. Cette recherche devrait aider à cet égard.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow