Back to Top

プログラムの覚書

Category: VB.NET

VB.NET

VB.NETコントロール(Control)

コントロールの基本的な機能を説明

フォーカスを設定する

Me.TextBox1.Focus()

フォーカスがあるか判断する

If Me.TextBox1.Focused Then
    MessageBox.Show("TextBox1にフォーカスがあり")
End If

コントロールを無効にする

Me.TextBox1.Enabled = False

コントロールを非表示にする

Me.TextBox1.Visible = False

または

Me.TextBox1.Hide()

[Tab]キーによってフォーカス遷移しないようにする

Me.TextBox1.TabStop = False

タブの移動順位を変更する

Me.TextBox1.TabIndex = 0

 

 

 

VB.NETマルチスレッドの排他制御

マルチスレッドでの排他制御の説明

以下のサンプルはスレッド1スレッド2よりsに文字を追加するぷろぐらむです。

排他制御はSyncLock~End SyncLockの間になります。

この行をコメントで外すと、まともに追加されません。

Private thread1 As System.Threading.Thread
Private thread2 As System.Threading.Thread

Private thisLock As New Object
Private s As String = ""

Private Sub ThreadMain1()
    Dim i As Integer
    For i = 0 To 9999
        SyncLock thisLock
            s = s + "A"
        End SyncLock
    Next
    System.Diagnostics.Debug.WriteLine(" Thread1:" & s.Length.ToString())
End Sub

Private Sub ThreadMain2()
    Dim i As Integer
    For i = 0 To 9999
        SyncLock thisLock
            s = s + "B"
        End SyncLock
    Next
    System.Diagnostics.Debug.WriteLine(" Thread2:" & s.Length.ToString())
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    thread1 = New System.Threading.Thread(AddressOf ThreadMain1)
    thread2 = New System.Threading.Thread(AddressOf ThreadMain2)
    thread1.Start()
    thread2.Start()
End Sub

・SyncLockはSystem.Monitorの省略型で、System.Monitorして排他もできます。

・SyncLock はSyncLock Meと自分自身のオブジェクトを指定できます。が注意が必要です。