私は 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
前もって感謝します!
注: コメントが間違っていることはわかっていますが'
、投稿で使用すると文字列として解釈されます。