トップ回答者
コントロールを比較する場合のSelect Caseについて

質問
-
コントロールを比較する場合の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だと通りません
基本的には同じだと思ってたのですが
構文が間違っているんでしょうか?
回答
すべての返信
-
諸農です。
Case Is = Button10
のようにすればコンパイルは通ります。
が、しかし、実行時エラーになります。
詳細は select case についてドキュメントを調べてみてください。Visual Basic 言語リファレンスSelect...Case ステートメント (Visual Basic)
http://msdn2.microsoft.com/ja-jp/library/cy37t14y.aspx -
Kazutaka Morono さんからの引用 Case Is = Button10
のようにすればコンパイルは通ります。
が、しかし、実行時エラーになります。こんな裏技もありますけどね。
ヽ(´ー`)ノ
Kazutaka Morono さんからの引用 | |
|
(*'ー') ?
リンク先での私の発言は、確かに方チェック (TypeOf) による例ですが、
インスタンスの同一性も、同じように Select Case を使って検証は可能だと思います。
Select Case True Case sender Is Button1 MessageBox.Show("Button1") Case sender Is Button2 MessageBox.Show("Button2") End Select |
とすれば、(望ましいかどうかはともかく) 可能でしょう。
|
コンパイル解決ができる Is ~ の方が望ましいと思います。
仕様を見直すのが 1 番ですが、どうしてもという場合は、通常 If の羅列になるでしょう。
諸農です。
じゃんぬねっと さんからの引用 | ||||
|
なるほど、コードを見させていただいて自分の認識誤りに気づきました。
まったくもってVB.NETのことを全然理解していなかったです。
じゃんぬねっと さんからの引用 | |
|
はい、そのとおりですね。
ちゃんとしたフォローがあるのはホントにありがたいです。感謝デス<(__)>