2017-04-15 14 views
0

私はvb.netラジオボタンprogromatically設定イベント

一般的に、レジストリから保存された設定から値を使用して、フォームをロードしています「をクリックしてください」「チェック」と起こさない: もしsFormat = TG_ReportFormatDft RadioButton1.Checked = trueの場合、 ........エルス RadioButton2.Checked = Trueの .......... エンド

TG_ReportFormatDft場合は定数文字列であり、重要ではありません。ラジオボタンは正しくグループ化され、手動でクリックすると正しく動作します。その後、手動で変更があった場合、私はチェックの手順で

'Follow what the user is doing 
Private Sub RadioButton1_Click(sender As Object, e As EventArgs) Handles RadioButton1.Click 
    msReports_Format2 = TG_ReportFormatDft 
    DoButtons(True) 
End Sub 

Private Sub RadioButton2_Click(sender As Object, e As EventArgs) Handles RadioButton2.Click 
    msReports_Format2 = TG_ReportFormatAlt 
    DoButtons(True) 
End Sub 

これらの下流のサブルーチンをマウスクリックなしでトリガされたときに私の驚きを想像してみてください。 RadioButton1.Checked = True ---マウスクリックイベントをトリガします。

「変更時」イベントは認識できますが、マウスクリックは発生していません。

この「クリック」イベントが伝播しないようにするにはどうすればよいですか?

+0

私はそれを取得しません。あなたは "...手動で変更があったかどうかをチェックする"というイベントハンドラを使用していますか? 'DoButtons'とは何ですか?どのような問題があっても、データバインディングはモデルがプロパティ変更イベントを発生させるのに役立ちます。 – Crowcoder

+0

レジストリからデフォルトをロードした後にクリックイベントハンドラを設定する必要があります。だからデザイナーではなく、 'AddHandler RadioButton1.Click、AddressOf RadioButton1_Click'のようなコードで –

+0

これはなぜ問題なのか正確には分かりませんが、そうではありません。簡単な解決策は、クラスに 'IgnoreClick As Boolean'変数を追加することです。 –

答えて

0

クラスレベルのブール変数「ClickedFromCode」を宣言します。今度は、コードから値を設定するときにブール値をtrueに設定します。下記のサンプルコードを参照してください。

Private ClickedFromCode As Boolean 

Private Sub Intialize 

    ClickedFromCode = True 
    If sFormat = TG_ReportFormatDft Then 
     RadioButton1.Checked = True 
    Else 
     RadioButton2.Checked = True 
    End If 
    ClickedFromCode = False 

End Sub 

Private Sub RadioButton1_Click(sender As Object, e As EventArgs) Handles RadioButton1.Click 
    If ClickedFromCode Then 
     Return 
    End If 
    msReports_Format2 = TG_ReportFormatDft 
    DoButtons(True) 
End Sub 

Private Sub RadioButton2_Click(sender As Object, e As EventArgs) Handles RadioButton2.Click 
    If ClickedFromCode Then 
     Return 
    End If 
    msReports_Format2 = TG_ReportFormatAlt 
    DoButtons(True) 
End Sub 
関連する問題