2016-12-22 127 views
0

我創建了81個動態按鈕,我可以在任何這些按鈕上檢測到正常的Click,但我不確定如何檢測右鍵單擊。這裏是我的代碼:動態創建按鈕的右鍵單擊處理程序

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

您可以替換整個'For'循環用'Array.IndexOf(btnArray,itemClicked)' –

+1

另外,在你的問題,它不是超清晰你是問什麼。如果您想要檢測右鍵單擊,請使用'MouseDown'而不是'Click',它會爲您提供一個'EventArgs',其中包含鼠標按鈕。 –

+0

@PowerBauer,我已經稍微重寫了你的問題,使其更清晰。如果我誤解了你的問題,請隨時回滾我的編輯。 (我也假設這個問題是關於WinForms的...)。 當你動態地創建'btnArray'中的所有按鈕時,我想你會添加'btnArray_Click'作爲'Click'事件的處理程序? –

回答

0

根據您要處理(當用戶點擊該按鈕時,或者當用戶釋放點擊),您可以處理MouseDownMouseUp事件的時機。他們兩個都有類型爲MouseEventArgs的事件參數,告訴你哪個鼠標按鈕被點擊。

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