如何为我自己的自定义控件创建新事件?

问题描述:

我有从面板继承一个类,下面是一些成员在这个类如何为我自己的自定义控件创建新事件?

Public ItemName As String 
Public Quantity As Integer 
Public Price As Decimal 
Public DiscountAmount As Decimal 

如何创建一个事件时,数量或DiscountAmount然后改变运行功能?

我尝试用这种方式来写,但我得到的错误: -

Private Sub info_Changed(sender As Object, e As EventArgs) Handles Quantity.Changed, DiscountAmount.Changed 
    myFunction() 
End Sub 

Error: Handles clause requires a WithEvents variable defined in the containing type or one of its base types.

您需要申报的用户控制的事件,然后消耗这些。见下面的代码。我创建了一个用户控件UserControl1。当PriceDiscountAmount发生更改时,此控件会引发事件。该用户控件然后在Form 1中使用。您可以使用相同的方法来更改Quantity

Public Class Form1 

    Private WithEvents userCntrl As New UserControl1 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

     ChangeValues() 

    End Sub 

    Private Sub ChangeValues() 
     userCntrl.Price = 100 
     userCntrl.DiscountAmount = 12 
    End Sub 

    Private Sub userCntrl_Price_Changed(newValue As Decimal) Handles userCntrl.Price_Changed, userCntrl.DiscountAmount_Changed 
     MessageBox.Show("New value = " & newValue.ToString) 
    End Sub 

End Class 


Public Class UserControl1 
    Public Event Price_Changed(ByVal newValue As Decimal) 
    Public Event DiscountAmount_Changed(ByVal newValue As Decimal) 

    Public ItemName As String 
    Public Quantity As Integer 

    Private Price_ As Decimal 
    Public Property Price() As Decimal 
     Get 
      Return Price_ 
     End Get 
     Set(ByVal value As Decimal) 
      If value <> Price_ Then 
       RaiseEvent Price_Changed(value) 
      End If 
      Price_ = value 
     End Set 
    End Property 

    Private DiscountAmount_ As Decimal 
    Public Property DiscountAmount() As Decimal 
     Get 
      Return DiscountAmount_ 
     End Get 
     Set(ByVal value As Decimal) 
      If value <> DiscountAmount_ Then 
       RaiseEvent DiscountAmount_Changed(value) 
      End If 
      DiscountAmount_ = value 
     End Set 
    End Property 

End Class