0

VB.NETで、次のカスタムイベントが発生しないのはなぜですか?

Public Class classes1
    Public Event buttonload(ByVal sender As System.Object, ByVal e As System.EventArgs)
    Protected Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)        Handles Button2.Click
        attd.Show()
        RaiseEvent buttonload(sender, e)
    End Sub
End Class

Public Class attd
    Dim WithEvents c1 As New classes1
    Sub c1_buttonload(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles c1.buttonload
        MsgBox("Event received")
    End Sub
End Class
4

1 に答える 1

1

最初のフォーム を使用してclasses12 番目のフォーム を表示し、attd次に CustomEvent を発生させています。次に、2 番目のフォーム でattd、最初のフォーム の別のインスタンスを作成しclasses1、ハンドラをそのインスタンスのイベントにアタッチしようとしています。それらは同じではないため、発火しません。

あなたがやろうとしていることは本当に明確ではありません。イベントを試しているだけの場合は、次のようなものを試すことができます。

フォーム1

Public Class Form1
    Dim attd As Form2 = New Form2
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        attd.Show()
    End Sub

    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        AddHandler attd.buttonload, AddressOf buttonLoadHandler
    End Sub

    Private Sub buttonLoadHandler(sender As Object, e As EventArgs)
        MsgBox("Event received")
    End Sub

End Class

フォーム2

Public Class Form2
    Public Event buttonload(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        RaiseEvent buttonload(sender, e)
    End Sub
End Class

2 番目のフォームを最初のフォームのボタン クリックに応答させたいだけの場合は、次のようなことを試してください。

フォーム1

Public Class Form1
    Dim attd As Form2 = New Form2
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        attd.Show()
        attd.showMessageBox()
    End Sub

    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.

    End Sub
End Class

フォーム2

Public Class Form2
    Public Sub showMessageBox()
        MsgBox("Hello World")
    End Sub
End Class
于 2013-02-04T04:13:59.207 に答える