あなたの習慣について教えてください!!

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

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

A 回答 (1件)

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 で動作テスト済みです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/06/04 22:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報