vb.net - 无法生成自定义事件

时间:2016-04-22 08:25:14

标签: vb.net

我对这堂课的问题有点困惑。我希望Pay按钮生成自定义事件。我在.NET中使用Visual Basic Studio 2010我认为主要问题是在RaiseEvent行中。

    Public Class Payment
    Public Delegate Sub PaymentMadeEvent(ByVal sender As Object, ByVal e As PaymentMadeEventArgs)
    Public Event PaymentEvent As PaymentMadeEvent

    Private Property __paymentAmount As Decimal
    Public Property paymentAmount As Decimal
        Get
            Return __paymentAmount
        End Get
        Set(ByVal value As Decimal)
            __paymentAmount = value
            PaymentBox.Text = String.Format("{0:c}", __paymentAmount)
        End Set
    End Property

    Private Sub PayButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PayButton.Click
        RaiseEvent PaymentEvent(Me, New PaymentMadeEventArgs() {paymentSuccess = True})
    End Sub

    Public Class PaymentMadeEventArgs : Class EventArgs
            Private Property __paymentSuccess As Boolean
            Public Property paymentSuccess As Boolean
                Get
                    Return __paymentSuccess
                End Get
                Set(ByVal value As Boolean)
                    __paymentSuccess = value
                End Set
            End Property
        End Class
    End Class
End Class

无论如何,提前谢谢!

1 个答案:

答案 0 :(得分:0)

您的代码中存在多种错误/错误的编码样式。

  1. Private Property __paymentAmount As Decimal
  2. 您不需要私有财产,只需使用变量即可。也不要使用__作为前缀。使用单_下划线或不使用前缀:

    Private _paymentAmount As Decimal
    
    1. Public Property paymentAmount As Decimal
    2. 使用大写:

      启动公共属性名称
      Public Property PaymentAmount As Decimal
      
      1. Public Class PaymentMadeEventArgs : Class EventArgs
      2. 这不是用于继承的正确VB .NET语法。 另外,使用自动属性来减少PaymentSuccess代码和更好的阅读:

          Public Class PaymentMadeEventArgs
                Inherits EventArgs
                Public Property PaymentSuccess As Boolean
        
          End Class
        

        修复所有内容后,在PayButton_Click中引发自定义事件:

        RaiseEvent PaymentEvent(Me, New PaymentMadeEventArgs() With {.PaymentSuccess = True})