2024/03/10(Sun) 00:46:33 編集(投稿者)
Friend WithEvents RadioButton1 As RadioButton
Private Sub RadioButton1_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton1.CheckedChanged
End Sub
このように書くと、WidthEvent をつけたフィールドはプロパティとしてコンパイルされ、次の様になります。
Private _RadioButton1 As RadioButton
Friend Property RadioButton1 As RadioButton
Get
Return _RadioButton1
End Get
Set(value As RadioButton)
If _RadioButton1 IsNot Nothing Then
RemoveHandler _RadioButton1.CheckedChanged, AddressOf RadioButton1_CheckedChanged
End If
_RadioButton1 = value
If _RadioButton1 IsNot Nothing Then
AddHandler _RadioButton1.CheckedChanged, AddressOf RadioButton1_CheckedChanged
End If
End Set
End Property
Private Sub RadioButton1_CheckedChanged(sender As Object, e As EventArgs) ' Handles は無くなる
End Sub
なので次のコードを実行すると
RemoveHandler RadioButton1.CheckedChanged, AddressOf RadioButton1_CheckedChanged 'イベントが解除される
RadioButton1.Checked = True '値が変更されても飛ばない
AddHandler RadioButton1.CheckedChanged, AddressOf RadioButton1_CheckedChanged '変更された後なので飛ばない
ということになります。