2015-01-28 1 views
-2

나는 수업에서 일하고있는 프로젝트에 대해 다음과 같은 코드를 가지고 있으며 합계 약 9 번 복사해야합니다. 매번 변경 될 유일한 것은 범주 번호와 레이블 이름입니다. 각각에 대해 mousemove 이벤트를 개별적으로 생성해야합니까? 아니면 하나의 하위 절차에서이를 수행 할 수있는 방법이 있습니까? 나는 그것이 더 어렵거나 덜 효율적이라면 그것이 가능하고 어떻게되는지를보고 싶습니다. 고맙습니다.하나의 하위 프로 시저로 여러 레이블에 대해 mousemove 이벤트를 만드는 방법은 무엇입니까?

Private Sub lbl1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles lbl1.MouseMove 
    category = 1 
    scoreRoll() 
    lbl1.Text = score 
End Sub 

이것은 중복 될 수있다. 누군가가 mousemove를 클릭하는 대신에 똑같은 일을하는 방법을 말해 줄 수 있다면 완벽 할 것입니다. 고맙습니다.

+0

가능한 중복 [같은 하위 여러 클릭 이벤트를 처리하는 방법 (http://stackoverflow.com/questions/13323397 : 당신은 그것이 적절하게 처리하는 하나 볼 수 sender 변수를 확인해야합니다/how-to-handle-multiple-click-events-with-same-sub) –

+0

@ Bjørn-RogerKringsjå 그래도 나는 mousemove와 같은 일을 어떻게해야합니까? – user1486297

+1

은 같은 원리 *를 적용합니다. 해답을 조사하고 특정 상황에 개념을 적용하십시오. – Plutonix

답변

0

여러 컨트롤이 동일한 이벤트를 공유 할 수 있습니다.

Private Sub lbl_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles lbl1.MouseMove, lbl2.MouseMove, lbl3.MouseMove, lbl4.MouseMove, lbl5.MouseMove, lbl6.MouseMove, lbl7.MouseMove, lbl8.MouseMove, lbl9.MouseMove 
    Dim lbl As Label = CType(sender, Label) 

    category = CInt(lbl.Name.Replace("lbl", "")) 
    scoreRoll() 
    lbl.Text = score 
End Sub 
+0

감사합니다. 나는 "복제본"으로 간주되었던 다른 페이지를 이해할 수 없었다. – user1486297

+1

@ user1486297 홀의 답변은 절대적으로 동일합니다. – Plutonix

관련 문제