使用代码创建对象的事件和属性

时间:2016-05-17 08:56:55

标签: vb.net

我通过浏览数据库并为数据库中的每个条目添加一个带有相关标签的面板,将许多面板添加到FlowLayoutPanel。我需要能够编码在点击任何面板时发生的事情,但我无法弄清楚如何。

这是我用来生成面板的代码

For i As Integer = 0 To IDs.Count - 1
    Dim testPanel As New Panel With
        {
            .Height = 50,
            .Width = 140,
            .BackColor = Blue,
            .Name = "rPanel" + i.ToString
        }
    FlowLayoutPanel.Controls.Add(testPanel)
 Next

2 个答案:

答案 0 :(得分:1)

MouseClick事件添加事件处理程序,如下所示。

For i As Integer = 0 To IDs.Count - 1
    Dim testPanel As New Panel With
        {
            .Height = 50,
            .Width = 140,
            .BackColor = Blue,
            .Name = "rPanel" + i.ToString
        }
    AddHandler testPanel.MouseClick, AddressOf PanelMouseClick
    FlowLayoutPanel.Controls.Add(testPanel)
 Next

然后为该事件创建一个处理程序子。像..

Private Sub PanelMouseClick(sender As Object, e As MouseEventArgs)
    MessageBox.Show("Mouse Clicked")
End Sub

AddHandler允许您设置要处理的事件。 AddressOf允许您设置希望调用处理所述事件的子组。如果您不确定子签名,则可以使用Visual Studio生成具有正确签名的任何已创建的子签名。

答案 1 :(得分:0)

在将面板添加到其他面板之前,向面板添加处理程序。

AddHandler testPanel.Click, AddressOf Method
FlowLayoutPanel.Controls.Add(testPanel)

添加一个将sender和eventargs作为值的新方法:

Private Sub Method(sender As Object, e As EventArgs)
    'Your Code
End Sub