希望获得一些关于从我的表单上的实例化类中捕获返回消息的最佳实践建议。
在我的表单 (form1.vb) 中,我有一个标签,它反映了正在做的事情,代码如下。
form1.vb 中用于显示消息的代码:
Public Sub DisplayMessage(ByVal Msg as String, ByVal Show as Boolean)
Application.DoEvents()
If Show Then
lblShow.Text = Msg
lblShow.Refresh()
End If
End Sub
到目前为止,我遇到了三种方法:
直接表单调用。在这种情况下,该类直接调用表单的消息例程:
form1.DisplayMessage("Show This Message", True)
类内的 RaiseEvent。在这种情况下,form1 是发送消息的类的 Friends WithEvents,并且该类将事件引发到窗体。
**Declared in Form1.vb** Friend WithEvents Class1 as New Class1 **Declared in Class1.vb** Public Event SetMessage(ByVal Msg As String, ByVal Show As Boolean) **Used in Class1.vb** RaiseEvent SetMessage("Show This Message", True)
让 EventArgs 类处理该事件。在这种情况下,我们有一个 EventArg.vb 类,它在我们引发事件时被实例化。
**Declared in Form1.vb** Friend WithEvents Class1 as New Class1 Private Sub class1_DisplayMessage(ByVal Msg As String, ByVal showAs Boolean, ByRef e As ProgressMessageEventArgs) Handles Class1.SetMessage DisplayMessage(Msg, Show) End Sub
**Declared in Class1.vb**
Public Event SetMessage(ByVal msg As String, ByVal Show As Boolean, ByRef e As ProgressMessageEventArgs)
Protected Sub CaptureMessage(ByVal msg As String, ByVal Show As Boolean)
RaiseEvent SetMessage(message, ShowList, New ProgressMessageEventArgs(message))
End Sub
**Used in Class1.vb**
RaiseEvent CaptureMessage("Show This Message", True)
**EventArg.vb created to handle ProgressMessageEventArgs class**
Public NotInheritable Class ProgressMessageEventArgs
Inherits System.EventArgs
Public txt As String
Public Sub New(ByVal txt As String)
MyBase.New()
Me.Text = txt
End Sub
End Class
场景 1 似乎是最简单的,尽管有人建议我不要这样做,并要求我发起一个事件。随着时间的推移,我遇到了场景 3,其中涉及一个额外的类与场景 2。
因此,问题是......在这三种方法之间,哪一种是将消息从类返回到表单的“正确”方式?由于场景 2 也可以正常工作,因此是否需要根据场景 3 附加 EventArg 类?
提前谢谢了。