none
コントロールを比較する場合のSelect Caseについて RRS feed

  • 質問

  •  コントロールを比較する場合のSelect Caseの構文がわかりません

     例えば

        Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
                If sender Is Button10 Then
                MsgBox("ok")
            End If
        End Sub

     のように Ifなら通るんですが

        Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
            Select Case sender
                Case Is Button10
                    MsgBox("ok")
            End Select
        End Sub

     のように Select Caseだと通りません

     基本的には同じだと思ってたのですが

     構文が間違っているんでしょうか?

     

    2006年7月26日 1:03

回答

  • Kazutaka Moronoさん じゃんぬねっとさん ありがとうございました

            Select Case True
                Case sender Is Button10
                    MessageBox.Show("Button10")
            End Select

    じゃんぬさんから頂いた形で通りました Select Case Trueという書き方があるんですね ありがとうございます

    又一つ 知識が増えましたのと お二人のやりとりを見て 奥の深さを感じました

    どうも ありがとうございました。

     

    2006年7月26日 7:40

すべての返信

  • 諸農です。

    じゃんぬさん、いつもフォローアップありがとうございます。

    型チェックをするのなら typeof を使う方法が思いつくのですが、
    インスタンスをチェックしたいだけなら、ボタンのTagプロパティに番号を振るとかでもよさげ。。。
    ※後々画面構成を変えられたりすると、変更作業が大変になる場面もありますけど(^^;

     #ちなみにILでの確認はまだしていませんのよ。おほほ。

    2006年7月26日 4:17
  •  Kazutaka Morono さんからの引用
    型チェックをするのなら typeof を使う方法が思いつくのですが、

    (*'ー') ?

    リンク先での私の発言は、確かに方チェック (TypeOf) による例ですが、
    インスタンスの同一性も、同じように Select Case を使って検証は可能だと思います。


    Select Case True
        Case sender Is Button1
            MessageBox.Show("Button1")
        Case sender Is Button2
            MessageBox.Show("Button2")
    End Select

     

    とすれば、(望ましいかどうかはともかく) 可能でしょう。

    インスタンスをチェックしたいだけなら、ボタンのTagプロパティに番号を振るとかでもよさげ。。。

    コンパイル解決ができる Is ~ の方が望ましいと思います。
    仕様を見直すのが 1 番ですが、どうしてもという場合は、通常 If の羅列になるでしょう。

    2006年7月26日 4:37
  • 諸農です。

     じゃんぬねっと さんからの引用

     Kazutaka Morono さんからの引用
    型チェックをするのなら typeof を使う方法が思いつくのですが、

    (*'ー') ?

    リンク先での私の発言は、確かに方チェック (TypeOf) による例ですが、
    インスタンスの同一性も、同じように Select Case を使って検証は可能だと思います。

    なるほど、コードを見させていただいて自分の認識誤りに気づきました。
    まったくもってVB.NETのことを全然理解していなかったです。

     じゃんぬねっと さんからの引用

    コンパイル解決ができる Is ~ の方が望ましいと思います。

    はい、そのとおりですね。

    ちゃんとしたフォローがあるのはホントにありがたいです。感謝デス<(__)>

     

    2006年7月26日 5:14
  • Kazutaka Moronoさん じゃんぬねっとさん ありがとうございました

            Select Case True
                Case sender Is Button10
                    MessageBox.Show("Button10")
            End Select

    じゃんぬさんから頂いた形で通りました Select Case Trueという書き方があるんですね ありがとうございます

    又一つ 知識が増えましたのと お二人のやりとりを見て 奥の深さを感じました

    どうも ありがとうございました。

     

    2006年7月26日 7:40
  •  もう一つ 教えてください

     新たに投稿します。

    2006年7月28日 13:21