vb.net - 如何使用 VB.NET 中的接口(interface)处理事件?

标签 vb.net interface

我是界面新手,我想了解它们的工作原理。

我写了下面的代码,除了点击事件没有触发外,它工作正常。

Public Class Form1
    Dim WithEvents Button As IClass = New MyButton

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Button.Parent = Me
    End Sub

    Public Sub ClickEventHandler(ByVal Sender As Object, ByVal E As EventArgs) Handles Button.Click
        MsgBox("Piwpiw !")
    End Sub
End Class

Public Interface IClass
    Event Click(ByVal Sender As Object, ByVal E As EventArgs)
    Property Parent
End Interface

Public Class MyButton
    Inherits SimpleButton
    Implements IClass

    Public Event click1(ByVal Sender As Object, ByVal E As System.EventArgs) Implements IClass.click

    Public Property Parent1 As Object Implements IClass.Parent
        Get
            Return MyBase.Parent
        End Get
        Set(ByVal value As Object)
            MyBase.Parent = value
        End Set
    End Property
End Class

这段代码有什么问题?

(PS:这只是一个让我理解接口(interface)如何工作的例子,没有任何功能意义。)

最佳答案

您在 MyButton 类中缺少一个方法来完成这项工作。

你需要这个:

Private Sub MyButton_Click(sender As Object, e As System.EventArgs) Handles Me.Click
    RaiseEvent click1(sender, e)
End Sub

本质上 SimpleButton 已经有一个点击方法。当您单击派生的 MyButton 类时,它会被引发。但是SimpleButton 上的Click 事件与IClass 界面上的Click 事件不同。您将其实现为 click1。因此,您只需在引发 Click 方法时引发 click1 方法即可。因此采用上述方法。

关于vb.net - 如何使用 VB.NET 中的接口(interface)处理事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21228703/

相关文章:

php - 是否有匹配 "string"和 "Object that implements __toString()"的 native 接口(interface)?

vb.net - 如何返回与登录用户当前 Outlook 配置文件关联的主电子邮件地址?

java - Java 8 中接口(interface)方法的隐式声明是什么?

asp.net-mvc - 为什么@Using Html.BeginForm 中的普通标记需要@?

html - 传递参数并引用#div

c# - 在 WCF 中返回许多接口(interface)

Java : How to pass data from one class to another using interface?

c# - 触发一个事件而不订阅它

regex - 使用 VB.net Regex 提取字符串的两个部分

vb.net - Winforms MDI "Desktop"区域边界