こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

if文からcase文への置き換え

ピクチャボックスをクリックしたら、チェック
ボックスがチェックされるメソッドを作りたいと
思っています。

Private Sub PictureBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click,PictureBox2.Click

'ここから
If sender Is PictureBox1 Then
If Me.CheckBox1.Checked = False Then
Me.CheckBox1.Checked = True
Else
Me.CheckBox1.Checked = False
End If
ElseIf sender Is PictureBox2 Then
If Me.CheckBox2.Checked = False Then
Me.CheckBox2.Checked = True
Else
Me.CheckBox2.Checked = False
End If
End If
'ここまで
End Sub

上記のif文をCase文に置き換えたくて、
'ここから
Select Case sender
Case PictureBox1
If Me.CheckBox1.Checked = False Then
Me.CheckBox1.Checked = True
Else
Me.CheckBox1.Checked = False
End If
Case PictureBox2
If Me.CheckBox2.Checked = False Then
Me.CheckBox2.Checked = True
Else
Me.CheckBox2.Checked = False
End If
End Select
'ここまで
上記のように書き換えたのですが、エラーが出てしまいます(ビルドは通るのですが)。

Case文の使い方が間違っているんだとは思いますが、どこがどう
間違っているのがよくわかりません。
ご教授いただけないでしょうか?

投稿日時 - 2006-06-04 20:26:39

QNo.2195426

困ってます

質問者が選んだベストアンサー

SENDER は iS xxx としかかけません。
ですから 答えは
======================================================
Private Sub PictureBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click, PictureBox2.Click
Select Case True
Case sender Is Me.PictureBox1
If Me.CheckBox1.Checked = False Then
Me.CheckBox1.Checked = True
Else
Me.CheckBox1.Checked = False
End If
Case sender Is Me.PictureBox2
If Me.CheckBox2.Checked = False Then
Me.CheckBox2.Checked = True
Else
Me.CheckBox2.Checked = False
End If
End Select

End Sub
======================================================
です。
もっとコーディング数を減らすには
=========================================================
Private Sub PictureBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click, PictureBox2.Click
Select Case True
Case sender Is Me.PictureBox1
Me.CheckBox1.Checked = Not Me.CheckBox1.Checked

Case sender Is Me.PictureBox2
Me.CheckBox2.Checked = Not Me.CheckBox2.Checked
End Select

End Sub
================================================================
でも同じ動作をします。
なお、VB.NET 2005 で動作テスト済みです。

投稿日時 - 2006-06-04 21:03:33

お礼

ありがとうございます。
なるほど、isがなければいけなかったのですね。
不勉強でした。
大変参考になるご意見、感謝です。

投稿日時 - 2006-06-04 22:52:16

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問