2014-04-14 2 views
0

저는 현재 VB.net WinForm 프로젝트 (계산기)를 만들고 있습니다. 내 질문은 복합 사용자 컨트롤에 관한 것입니다. 약 30 개의 버튼을 포함하는 합성 사용자 정의 컨트롤을 만들었습니다. 다른 클래스에서 사용자가 특정 단추 (예 : "EqlBut")를 클릭하면 알 수 있습니까? 나는 성공하지 않고 다음을 시도했다. 어떤 제안?합성 사용자 정의 컨트롤에서 특정 단추를 클릭하면 알 수 있습니까?

그것은 EqlBut.Click을 좋아하지 않는

Imports MyCalc.CalcCompCtrl 

Public Class Calc 
Sub EqlBut_Click(sender As System.Object, e As System.EventArgs) Handles EqlBut.Click 
    'do stuff when user clicks button labeled EqlBut in composite user control 
End Sub 
End Class 

내 복합 제어 CalcCompCtrl.vb를 가져오고 말한다 아래에있는 내 Calc.vb 클래스에서 발견되는 코드 : 절은에 정의에서 WithEvents 변수가 필요 핸들의 수 함유 유형 또는 그 염기 중 하나를 포함한다.

Public Class CalcCompCtrl 

Public Sub EqlBut_Click(sender As System.Object, e As System.EventArgs) Handles EqlBut.Click 
    If ModeSel.SelectedIndex = iDecimal Then 
     Select Case sMathOp 
     Case "+" 
     End Select 
    End If 
End Sub 
End Class 

답변

3

컨트롤에서 사용자 지정 이벤트를 사용할 수 있습니다.

이벤트 신고하기 당신은 뭔가를 하시겠습니까?

'This Would Be Done At the Global Level in the Control 
'Parameters Can Be Anything that you want your event handler to have access to. 

Public Event TotalCalculated(ByVal total as Integer) 

그런 다음이 컨트롤에 대한 여러분의 코드가 제어

Sub TotalCalculated(ByVal total as Integer) Handles CalcCompCtrl.TotalCalculated 
    'Do Stuff Each Time The Total Calculated Event is Raised 
End Sub 
+1

감사를 사용하는 코드에서 다음이

Sub EqlBut_Click(sender As System.Object, e As System.EventArgs) Handles EqlBut.Click Dim total as Integer = SomeNumber RaiseEvent TotalCalculated(total) End Sub 

과 같을 것이다 이벤트 인상 완벽하게 일했습니다. 맞춤 이벤트에 대해 전혀 알지 못했지만 이제는 완벽하게 이해됩니다. – mschmidt9026

관련 문제