我正在创建一个 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
提前致谢!
注意:我知道评论是错误的,但如果我'
在帖子中使用,它会将它们解释为字符串。