私はVB6からVB.NETへのいくつかのレガシーコードを移行しており、厄介な問題にぶつかってきました。現在起こっているのは、ユーザーにRadionButton
の階層を示すコントロールが提供されていることです。彼らが値を選択すると、コードはそれが有効であることを検証します(CをAの子にすることはできず、Bの子でなければなりません)。もしそうでなければ、RadioButton
を元の設定に戻します。イベントでRadioButtonチェックステートを変更します
問題は、これを行う関数がイベントハンドラに戻ると、RadioButton
の状態がクリックされたときの状態に戻ります(ユーザーがクリックした場合、コードはBに戻ります。無限ループを引き起こすなど、Bに戻すなどのイベントを発生させます)。 RadioButton is selected inside a function called by
CheckedChanged`イベントを変更する方法はありますか?
私はより良いデザインは前もって無効RadioButton
コントロールを無効にすることである知っているが、これは、それが設計されています方法ですし、私の仕事は、それが限られた時間枠での作業を取得することですので、私は今のように悪いデザインとこだわっています後で良いデザインに反対する。
コード:
Private Sub optIndent_2_ClickEvent(sender As Object, e As EventArgs) Handles optIndent_2.CheckedChanged
optIndent_Click(2, sender.Checked)
End Sub
Private Sub optIndent_3_ClickEvent(sender As Object, e As EventArgs) Handles optIndent_3.CheckedChanged
optIndent_Click(3, sender.Checked)
Dim i As Integer = 1
End Sub
Private Sub optIndent_Click(ByRef Index As Short, ByRef value As Short)
If value = False Then
Exit Sub
End If
If Index = 2 Then
Exit Sub
End If
If Index = 3 Then
optIndent_2.Checked = True
Exit Sub
End If
End Sub
あなたはコードがoptIndent_Click (3, sender.checked)
値がfalseからtrueに移行します終了したときに、プロセスが永遠に繰り返されていることがわかります。