Vb.net WinForms-MVP-窗体界面中的窗体事件

Vb.net WinForms-MVP-窗体界面中的窗体事件,vb.net,winforms,Vb.net,Winforms,我正试图在我正在开发的一个小型WinForms应用程序中实现MVP 众所周知,我需要定义一个IView接口 IView界面应该有一个事件,该事件在混凝土视图加载时触发 此事件已作为Load()事件在WinForms中实现 现在,在一些指南/教程中,我看到他们是这样实现的 Public Interface IView Event OnPrepareView() ..... End Interface Public Class MainForm Inherits Form Impl

我正试图在我正在开发的一个小型WinForms应用程序中实现MVP

众所周知,我需要定义一个
IView
接口

IView
界面应该有一个事件,该事件在混凝土
视图加载时触发

此事件已作为
Load()
事件在WinForms中实现

现在,在一些指南/教程中,我看到他们是这样实现的

Public Interface IView
    Event OnPrepareView()
    .....
End Interface

Public Class MainForm
Inherits Form
Implements IView

    Private Sub Main_Load(sender As Object, e As EventArgs) Handles Me.Load
        RaiseEvent OnPrepareView()
    End Sub

    Public Event OnPrepareView()

End Class
现在我想知道是否可以直接在界面中公开表单
Load
事件,这样
IView
看起来像:

Public Interface IView
    Event Load()
    .....
End Interface
加载事件以其
Load
事件的形式实现

如果可能,我应该如何在VB中实现它

更新

例如,在
System.Windows.Forms.Form
中定义的属性(如
Icon
)或函数(如
Show

我会有一个
IView

Public Interface IView
    Property Icon as Icon
    Sub Show()
End Interface
然后在我的具体实施中

Public Class FooForm
Inherits Form
Implements IView

    Public Overloads Property Icon as Icon Implementes IView.Icon
    Get
        return MyBase.Icon
    End Get
    Set
        MyBase.Icon = value
    End Set

    Public Overloads Sub Show()
        MyBase.Show()
    End Sub
End Class
但是我怎样才能处理表单事件呢

或者我应该在
IView
中声明新事件,比如:

Public Interface IView
    Property Icon as Icon
    Sub Show()
    Event OnLoad()
End Interface

Public Class FooForm
Inherits Form
Implements IView
....
....
    Public Event OnLoad() Implements IView.OnLoad

    Private Sub FooForm_Load() Handles Me.Load
        RaiseEvent OnLoad()
    End Sub
End Class

您应该在接口中声明事件,然后在
表单中
实现接口,然后重写
OnLoad
并引发事件。例如:

Public Interface IView
    Event Load As EventHandler
End Interface

Public Class Form1
    Implements IView
    Public Shadows Event Load As EventHandler Implements IView.Load
    Protected Overrides Sub OnLoad(e As EventArgs)
        MyBase.OnLoad(e)
        RaiseEvent Load(Me, e)
    End Sub
End Class

尝试添加Inherits表单实现IView我在代码中忘记了它,但它已经像你说的那样了……阅读了很长时间后,我认为Vb.Net无法处理这个问题。我想我需要重载方法/属性/事件,然后从基类调用基方法/类/任何东西,就像这里说的那样。事件应该在接口中声明,应该在表单中实现,并在
表单的
OnLoad
事件中引发。就像你在第一个事件中所做的那样。@RezaAghaei小例子是否可行?我只是想知道,在VB中,是否可以使用表单事件(如load、closed、closing等)作为定义具有相同签名的事件的接口的实现。换句话说,如果我可以通过接口公开表单事件。。。在C#中这没有问题,但在VB中我必须使用“Implements Ifoo.Foo”。但是我可以用VB写这篇文章,因为事件是在基类中声明的(在WinForm的情况下,是在System.Windows.Forms.Form中声明的)是的,只需不处理表单中的
Load
事件,就可以重写负责引发
Load
事件的
OnLoad
方法。