我目前正在开发VB.net WinForm项目(计算器)。我的问题是关于复合用户控件。我创建了一个复合用户控件,其中包含大约30个按钮。从另一个课程中,是否可以知道用户何时点击特定按钮(" EqlBut"在我的情况下)?我试过以下但没有成功。有什么建议吗?
以下代码可在我的Calc.vb类中找到,该类导入我的复合控件CalcCompCtrl.vb
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
它不喜欢EqlBut.Click并说:Handles子句需要在包含类型或其基础之一中定义的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
答案 0 :(得分: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 EqlBut_Click(sender As System.Object, e As System.EventArgs) Handles EqlBut.Click
Dim total as Integer = SomeNumber
RaiseEvent TotalCalculated(total)
End Sub
然后在使用您的控件的代码中
Sub TotalCalculated(ByVal total as Integer) Handles CalcCompCtrl.TotalCalculated
'Do Stuff Each Time The Total Calculated Event is Raised
End Sub