2016-12-22 3 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_Click' в качестве обработчика события' Click', когда вы динамически создаете все кнопки в 'btnArray'? –

ответ

0

В зависимости от сроков, которые вы хотите обработать (когда пользователь нажимает на кнопку или, когда пользователь отпускает щелчок), вы можете справиться с MouseDown или MouseUp событием. Оба они имеют аргументы событий типа 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 
Смежные вопросы