投稿者 あせたけ  (社会人) 投稿日時 2020/11/3 16:23:19
雑談的と言うか…技術的と言うか…な話題になりますが…^^;

多:1のイベント処理で、通常は…
    Private Sub lblMoving_Click(sender As Object, e As EventArgs) Handles lblMovingUp.Click, lblMovingDown.Click, lblMovingLeft.Click, lblMovingRight.Click
        Dim dir As Map.Dir
        If sender Is lblMovingUp Then
            dir = Map.Dir.Up
        ElseIf sender Is lblMovingDown then
            dir = Map.Dir.Down
        ElseIf sender Is lblMovingLeftthen
            dir = Map.Dir.Left
        ElseIf sender Is lblMovingRightthen
            dir = Map.Dir.Right
        End If
        m.Map.Map_Move(Direction:=dir)
    End Sub

…とするところを…

    Private Sub lblMoving_Click(sender As Object, e As EventArgs) Handles lblMovingUp.Click, lblMovingDown.Click, lblMovingLeft.Click, lblMovingRight.Click
        Dim dir As Map.Dir
        Select Case sender
            Case lblMovingUp
                dir = Map.Dir.Up
            Case lblMovingDown
                dir = Map.Dir.Down
            Case lblMovingLeft
                dir = Map.Dir.Left
            Case lblMovingRight
                dir = Map.Dir.Right
        End Select
        m.Map.Map_Move(Direction:=dir)
    End Sub

…と言う感じには書けないものでしょうか…
(ちなみにこのままではSystem.InvalidCastExeptionが出ます)

Select Case CType(sender,Label) …としてみましたが、今度は「演算子 '=' は、型 'Label' に対して定義されていません…と出ます。

素直にタグネームを入れてやれよと言う話もあるとは思いましたが、
気になりましたので、投稿させて頂きました^^;

<参考>タグネームを付けて処理させて例(これはエラーは出ず、期待通りに処理する)
    Private Sub lblMoving_Click(sender As Object, e As EventArgs) Handles lblMovingUp.Click, lblMovingDown.Click, lblMovingLeft.Click, lblMovingRight.Click
        Dim dir As Map.Dir
        Select Case sender.Tag
            Case "UP"
                dir = Map.Dir.Up
            Case "DOWN"
                dir = Map.Dir.Down
            Case "LEFT"
                dir = Map.Dir.Left
            Case "RIGHT"
                dir = Map.Dir.Right
        End Select
        m.Map.Map_Move(Direction:=dir)
    End Sub