サーチ…
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
必要に応じて使用できる他のタイマーがあります。この検索は、その点で役立つはずです。