Поиск…


Hello World в форматах VB.NET

Чтобы показать окно сообщения, когда была показана форма:

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 () будет вызываться сначала, и только один раз, когда форма сначала загружается. Show () будет вызываться каждый раз, когда пользователь запускает форму. Активировать () будет вызываться каждый раз, когда пользователь делает форму активной.

Load () будет выполняться до вызова Show (), но будет предупрежден: вызов msgBox () в show может привести к тому, что msgBox () будет выполнен до завершения Load (). Как правило, плохая идея зависит от упорядочения событий между Load (), Show () и т. Д.

Для начинающих

Некоторые вещи, которые все новички должны знать / делать, помогут им хорошо начать с VB .Net:

Установите следующие параметры:

'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

Используйте &, not + для конкатенации строк. Строки следует изучать в деталях, поскольку они широко используются.

Потратьте некоторое время на понимание значений и ссылочных типов .

Никогда не используйте Application.DoEvents . Обратите внимание на «Предостережение». Когда вы достигнете точки, где это кажется чем-то, что вы должны использовать, спросите.

Документация - ваш друг.

Таймер форм

Компонент Windows.Forms.Timer может использоваться для предоставления информации пользователя, которая не критична по времени. Создайте форму с помощью одной кнопки, одной метки и компонента таймера.

Например, он может использоваться, чтобы периодически показывать пользователю время суток.

'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

Но этот таймер не подходит для синхронизации. Пример будет использовать его для обратного отсчета. В этом примере мы будем моделировать обратный отсчет до трех минут. Это вполне может быть одним из самых скучно важных примеров здесь.

'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

После нажатия кнопки1 происходит переход на три минуты, а label1 показывает результаты. Является ли label1 показать 180? Возможно нет. На моей машине он показал 182,5!

Причина несоответствия в документации: «Компонент Timer Windows Forms является однопоточным и ограничен точностью до 55 миллисекунд». Вот почему он не должен использоваться для синхронизации.

Используя таймер и секундомер немного иначе, мы можем получить лучшие результаты.

'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

Существуют другие таймеры, которые можно использовать по мере необходимости. Этот поиск должен помочь в этом отношении.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow