- PR -

[RadioButton] CheckedChangedイベントが2回走る

投稿者投稿内容
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2008-11-12 09:35
If TypeOf sender Is RadioButton Then

じゃ駄目でしたっけ?
テッテ
ベテラン
会議室デビュー日: 2008/03/16
投稿数: 91
投稿日時: 2008-11-12 09:49
DirectCast を使うなら King さんが指摘されているようにこういう書き方もあります。今回は TryCast を使ったほうがよいと思って、そちらを使った例を挙げました。

コード:

If TypeOf sender Is RadioButton Then
    Dim rb As RadioButton = DirectCast(sender, RadioButton)
    If rb.Checked Then

    End If
End If



RadioButton かどうかわからないので確認して、RadioButton ならキャストするというのをそのままコードにした形です。これを一緒にやってくれる便利関数が TryCast 関数だと思ってください。(TryCast 関数は 2005 で追加されたので、それまではこういう書き方をせざるを得ませんでした。)

ということで、もん吉さんもおっしゃっているように、最初の If 文が必要な場合(つまり、実際の型が RadioButton だという前提がない場合)には、TryCast を使えばよいし、最初の If 文が不要な場合(つまり、実際の型が RadioButton だという前提がある場合)には DirectCast を使えばよいと思います。

また、TryCast は値型には使えないので、その場合は DirectCast を使うことになると思います。
さえ
会議室デビュー日: 2008/10/24
投稿数: 10
投稿日時: 2008-11-13 06:10
もん吉さん、Kingさん、テッテさん、

皆様どうも有難う御座います。
オブジェクト型変換のあるべきコーディングについて大変勉強になりました。

今後とも宜しくお願い致します。

スキルアップ/キャリアアップ(JOB@IT)