2017-01-30 94 views
0

我有從面板繼承一個類,下面是一些成員在這個類如何爲我自己的自定義控件創建新事件?

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.

回答

1

您需要申報的用戶控制的事件,然後消耗這些。見下面的代碼。我創建了一個用戶控件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 
相關問題