单击动态按钮后尝试添加新按钮时程序卡住

时间:2014-03-03 18:41:57

标签: vb.net winforms

Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Panel1.Controls.Clear()

    Dim patiekalai = New Button()
    Dim patiekalai1 = New Button()
    Dim patiekalai2 = New Button()
    Dim patiekalai3 = New Button()
    Dim patiekalai4 = New Button()

    Panel1.Controls.Add(patiekalai)
    patiekalai.Location = New Point(0, 0)
    patiekalai.Size = New Size(80, 50)

    Panel1.Controls.Add(patiekalai1)
    patiekalai1.Location = New Point(0, 50)
    patiekalai1.Size = New Size(80, 50)

    Panel1.Controls.Add(patiekalai2)
    patiekalai2.Location = New Point(0, 100)
    patiekalai2.Size = New Size(80, 50)

    Panel1.Controls.Add(patiekalai3)
    patiekalai3.Location = New Point(0, 150)
    patiekalai3.Size = New Size(80, 50)

    Panel1.Controls.Add(patiekalai4)
    patiekalai4.Location = New Point(0, 200)
    patiekalai4.Size = New Size(80, 50)

    patiekalai.Image = Image.FromFile("../M/Karštieji patiekalai.jpg")
    AddHandler patiekalai.Click, AddressOf Patiekalai_Click
    patiekalai1.Image = Image.FromFile("../M/Salotos.jpg")
    patiekalai2.Image = Image.FromFile("../M/Desertai.jpg")
    patiekalai3.Image = Image.FromFile("../M/Užkandžiai.jpg")
    patiekalai4.Image = Image.FromFile("../M/Sriubos.jpg")
End Sub
Private Sub Patiekalai(ByVal sender As System.Object, ByVal e As System.EventArgs)

    Panel1.Controls.Clear()
    Dim patiekalai5 = New Button()
    Dim patiekalai6 = New Button()
    Dim patiekalai7 = New Button()
    Panel1.Controls.Add(patiekalai5)
    patiekalai5.Location = New Point(0, 0)
    patiekalai5.Size = New Size(80, 50)

    Panel1.Controls.Add(patiekalai6)
    patiekalai6.Location = New Point(0, 50)
    patiekalai6.Size = New Size(80, 50)

    Panel1.Controls.Add(patiekalai7)
    patiekalai7.Location = New Point(0, 100)
    patiekalai7.Size = New Size(80, 50)
End Sub

Private Sub Patiekalai_Click(ByVal sender As Object, ByVal e As EventArgs)
    Throw New NotImplementedException
End Sub
End Class

我得到了

Private Sub Patiekalai_Click(ByVal sender As Object, ByVal e As EventArgs)
    Throw New NotImplementedException
End Sub
程序失败后卡住了。

我试图在点击patiekalai按钮后添加新按钮。

1 个答案:

答案 0 :(得分:0)

您必须使用AddHandler附加代理手动在代码中添加处理程序。

AddHandler patiekalai6.click, addressof Patiekalai_Click
例如,

。你需要为每个按钮添加这样的处理程序。

Panel1.Controls.Add(patiekalai7)
patiekalai7.Location = New Point(0, 100)
patiekalai7.Size = New Size(80, 50)
AddHandler patiekalai7.click, addressof Patiekalai_Click