2016-12-22 33 views
0

Ich erstellte 81 Schaltflächen dynamisch und ich kann eine normale Click auf einer dieser Schaltflächen erkennen, aber ich bin mir nicht sicher, wie man einen Rechtsklick erkennt. Hier ist mein Code:Rechtsklick-Handler für dynamisch erstellte Schaltflächen

Private Sub btnArray_Click(ByVal sender As Object, ByVal e As System.EventArgs) 

    Dim itemClicked As Button = CType(sender, Button) 
    Dim index As Integer = -1 

    For i As Integer = LBound(btnArray) To UBound(btnArray) 
     If btnArray(i) Is itemClicked Then 
      index = i 
      Exit For 
     End If 
    Next 

    If index > 0 Then 
     'MessageBox.Show("Sie haben den Button Nr. " & CStr(index) & " angeklickt") 
    End If 

End Sub 
+2

Sie können Ihre gesamte 'For' Schleife mit' Array.indexOf (btnArray, itemClicked) ' –

+1

Auch in Ihrer Frage ersetzen, ist es nicht super klar, was Sie fragen. Wenn Sie nach einem Rechtsklick suchen, verwenden Sie 'MouseDown' anstelle von' Click', es wird Ihnen ein 'EventArgs' mit den Maustasten geben. –

+0

@PowerBauer, ich habe Ihre Frage etwas umformuliert, um sie klarer zu machen. Wenn ich missverstanden habe, was du fragst, kannst du meine Bearbeitung rückgängig machen. (Ich habe auch angenommen, dass diese Frage WinForms betrifft). Ich denke, Sie fügen 'btnArray_Click 'als Handler für das' Click'-Ereignis hinzu, wenn Sie alle Schaltflächen in 'btnArray' dynamisch erstellen? –

Antwort

0

Je nach Zeitpunkt, dass Sie behandeln möchten (wenn der Benutzer auf die Schaltfläche klickt oder wenn der Benutzer den Klick freigibt), können Sie entweder das MouseDown oder MouseUp Ereignis behandeln. Beide haben Ereignisargumente des Typs MouseEventArgs, die Ihnen sagen, welche Maustaste geklickt wurde.

Private Sub btnArray_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) 
    If e.Button = MouseButtons.Right Then 
     MessageBox.Show("You have right-clicked a button") 
    End If 
End Sub 
Verwandte Themen