サーチ…


VB.NETフォームのHello World

フォームが表示されているときにメッセージボックスを表示するには:

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()は、ユーザーがフォームを起動するたびに呼び出されます。 Activate()は、ユーザーがフォームをアクティブにするたびに呼び出されます。

Show()が呼び出される前にLoad()が実行されますが、showでmsgBox()を呼び出すと、Load()が終了する前にmsgBox()が実行される可能性があります。 Load()、Show()などのイベントの順序付けに依存することは、一般的には悪い考えです。

初心者向け

すべての初心者が知っておくべきこと/ VBでの良いスタートを持つのに役立ついくつかのこと:

次のオプションを設定します。

'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

文字列の連結には+、+を使用しないでください。 ストリングは、広く使われているので、細かく調べる必要があります。

値と参照の型を理解してください。

Application.DoEventsを使用しないでください。 「注意」に注意してください。あなたが使うべきもののように見えるところにきたら、尋ねなさい。

ドキュメントはあなたの友人です。

フォームタイマー

Windows.Forms.Timerコンポーネントはタイムクリティカルではないユーザー情報を提供するために使用できます。 1つのボタン、1つのラベル、およびタイマーコンポーネントでフォームを作成します。

たとえば、ユーザーに定期的に時刻を示すために使用できます。

'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

しかし、このタイマーはタイミングには適していません。例は、カウントダウンのためにそれを使用しています。この例では、カウントダウンを3分にシミュレートします。これはここで最も退屈な重要な例の1つになるかもしれません。

'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

button1をクリックすると約3分が経過し、label1が結果を表示します。 label1には180が表示されますか?おそらくそうではありません。私のマシンでは182.5を示しました!

不一致の理由は、「Windowsフォームタイマコンポーネントはシングルスレッドで、精度は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