是否可以知道何时在复合用户控件中单击特定按钮?

时间:2014-04-14 20:25:30

标签: vb.net user-controls

我目前正在开发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

1 个答案:

答案 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