1

我正在创建一个 MVP 项目,并且我已经完成了大部分工作,但我对几点有点困惑。这是我的代码:

//Used to invoke asynchronous calls.
Public Delegate ModelNumberChangedDelegate(sender as Object, e as EventArgs)

Public Interface IEquipmentView
    Event ModelNumberChanged as ModelNumberChangedDelegate

    Property ModelNumber as String
End Interface

Public Class Equipment
    Inherits Form
    Implements IEquipmentView

Public Property ModelNumber Implements IEquipmentView.ModelNumber
    Get
        return txtModelNumber.Text //A texbox
    End Get
    Set(value as String)
        txtModelNumber.Text = value
    End Set
End Property

Public Event ModelNumberChanged(sender as Object, e as EventArgs) _
    Implements IEquipmentView.ModelNumberChanged

Public Sub New()
    InitializeComponent()

    AddHandler ModelNumberChanged, AddressOf view_ModelNumberChanged
End Sub   

Private Sub view_ModelNumberChanged(sender as Object, e as EventArgs)
    //If invoke is required, create a ModelNumberChangedDelegate and invoke it
    //at this address. Otherwise, just execute the method.
End Sub

End Class

我的困惑在于我应该如何实际提出这个事件。我是否应该简单地转到该属性并手动引发 ModelChangedEvent,如下所示:

Public Property ModelNumber Implements IEquipmentView.ModelNumber
    Get
        return txtModelNumber.Text //A texbox
    End Get
    Set(value as String)
        txtModelNumber.Text = value
        RaiseEvent ModelNumberChangedEvent(txtModelNumber, Nothing)
    End Set
End Property

或者,我应该将控件的更改事件直接绑定到委托函数,如下所示:

Public Sub view_ModelNumberChanged(sender as Object, e as EventArgs) _
    Handles txtModelNumber.Changed
    //If invoke is required, create a ModelNumberChangedDelegate and invoke it
    //at this address. Otherwise, just execute the method.
End Sub

提前致谢!

注意:我知道评论是错误的,但如果我'在帖子中使用,它会将它们解释为字符串。

4

0 回答 0