Visual Studio 2015中的WithEvents错误?

VV5198722

我可能遇到了Visual Studio 2015的问题。如果使用WithEventsHandles关键字定义同一事件的三个​​处理程序,则不会调用其中一个处理程序。我在我们的软件中跟踪了此行为,并编写了以下WinForms示例项目。

Public Class MainBase1
    Inherits Form

    Protected WithEvents Button1 As Button
    Protected TextBox1 As TextBox

    Public Sub New()
        SuspendLayout()

        Text = "WithEvents Test"
        ClientSize = New Size(300, 300)

        Button1 = New Button()
        Button1.Location = New Point(10, 10)
        Button1.Size = New Size(100, 25)
        Button1.Text = "Button1"
        Controls.Add(Button1)

        TextBox1 = New TextBox()
        TextBox1.Location = New Point(10, 50)
        TextBox1.Multiline = True
        TextBox1.Size = New Size(280, 240)
        Controls.Add(TextBox1)

        ResumeLayout(False)
        PerformLayout()
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        TextBox1.Text &= "MainBase1: Button click handled." & vbNewLine
    End Sub
End Class


Public Class MainBase2
    Inherits MainBase1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        TextBox1.Text &= "MainBase2: Button click handled." & vbNewLine
    End Sub
End Class


Public Class Main
    Inherits MainBase2

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        TextBox1.Text &= "Main: Button click handled." & vbNewLine
    End Sub
End Class

单击Button1 Textbox1包含后

MainBase1: Button click handled.
Main: Button click handled.

如果在Visual Studio 2012下编译相同的示例,则会得到

MainBase1: Button click handled.
MainBase2: Button click handled.
Main: Button click handled.

有人也遇到过这个问题吗?还是我错过了什么?

VV5198722

该错误仍然存​​在。这是我的解决方案。

我在做了处理程序MainBase1 Protected Overridable子类不使用,Handles而是覆盖处理程序和call MyBase

这种方法的优点是处理程序的执行顺序是明确定义的。

Public Class MainBase1
    Inherits Form

    Protected WithEvents Button1 As Button
    Protected TextBox1 As TextBox

    Public Sub New()
        SuspendLayout()

        Text = "WithEvents Test"
        ClientSize = New Size(300, 300)

        Button1 = New Button()
        Button1.Location = New Point(10, 10)
        Button1.Size = New Size(100, 25)
        Button1.Text = "Button1"
        Controls.Add(Button1)

        TextBox1 = New TextBox()
        TextBox1.Location = New Point(10, 50)
        TextBox1.Multiline = True
        TextBox1.Size = New Size(280, 240)
        Controls.Add(TextBox1)

        ResumeLayout(False)
        PerformLayout()
    End Sub

    Protected Overridable Sub Button1_Click(sender As Object, e As EventArgs) _
    Handles Button1.Click
        TextBox1.Text &= "MainBase1: Button click handled." & vbNewLine
    End Sub
End Class


Public Class MainBase2
    Inherits MainBase1

    Protected Overrides Sub Button1_Click(sender As Object, e As EventArgs)
        MyBase.Button1_Click(sender, e)
        TextBox1.Text &= "MainBase2: Button click handled." & vbNewLine
    End Sub
End Class


Public Class Main
    Inherits MainBase2

    Protected Overrides Sub Button1_Click(sender As Object, e As EventArgs)
        MyBase.Button1_Click(sender, e)
        TextBox1.Text &= "Main: Button click handled." & vbNewLine
    End Sub
End Class

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Visual Studio Community 2015中的SDK错误

来自分类Dev

无权报告Visual Studio 2015中的错误

来自分类Dev

无权报告Visual Studio 2015中的错误

来自分类Dev

Visual Studio 2015中的IISExpress错误

来自分类Dev

Visual Studio 2015中的C代码错误

来自分类Dev

Visual Studio 2015错误500.19

来自分类Dev

Visual Studio 2015中的Iostream

来自分类Dev

在Visual Studio 2015中解析离子标签时遇到错误

来自分类Dev

在Visual Studio 2015中的错误位置插入符号

来自分类Dev

在Visual Studio 2015中的ionic项目corodva中生成错误

来自分类Dev

Visual Studio2015中的网络运行错误

来自分类Dev

在Visual Studio 2015中安装Postsharp时发生错误-532462766

来自分类Dev

Visual Studio 2015中的预编译头错误

来自分类Dev

Visual Studio 2015中的错误在2012年消失

来自分类Dev

在 DLL 中包含 OpenVDB;使用 Visual Studio 2015 链接错误

来自分类Dev

安装 SFML 后 Visual Studio 2015 中的错误

来自分类Dev

Visual Studio 2015预览新项目错误

来自分类Dev

Visual Studio 2015 IIS Express 500错误

来自分类Dev

Visual Studio 2015更新1,铛错误

来自分类Dev

wxWidgets Visual Studio 2015链接错误

来自分类Dev

Visual Studio 2015的AllMargins

来自分类Dev

与Visual Studio 2015的果酱

来自分类Dev

Visual Studio 2015

来自分类Dev

卸载Visual Studio 2015

来自分类Dev

Visual Studio中的C ++错误

来自分类Dev

Visual Studio中的Phalanger错误

来自分类Dev

Visual Studio 中的错误结果

来自分类Dev

在 Visual Studio 中构建错误

来自分类Dev

无法摆脱Visual Studio 2015中的项目