AdressOf 链接到其他类?

问题描述 投票:0回答:2

我正在尝试为餐馆制定一个程序,允许他们在程序中添加和删除桌子。 我的想法是,有一个名为“添加表”的按钮,它将生成一个名称为表号的按钮,并且新创建的按钮将在其中包含一个功能或子功能(我对此还不太确定,工作正在进行中)

问题是我已经找到了如何动态添加按钮,但我对 AdressOf 部分感到困惑。

我是否需要使用 adressOf 部分来链接所需的方法或以其他方式完成的方法?

Public Class Form_Create_Button

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    CreateButton(TextBox1.Text, TextBox2.Text)
End Sub

Private Sub CreateButton(TableNr As String, PersonNr As String)
    Dim Button As New Button With {.Left = 10, .Top = 10, .Text = TableNr, .Name = "Button" & TableNr}
    AddHandler Button.Click, AddressOf '...
    Main_Form.GroupBox1.Controls.Add(Button)
End Sub

下课

vb.net visual-studio
2个回答
5
投票

您可以使用

AddressOf
操作符r 以编程方式添加事件处理程序。因此,您可以为所有按钮使用一个处理程序。您可以使用
Sender
参数来识别按钮:

Private Sub CreateButton(TableNr As String, PersonNr As String)
    Dim Button As New Button With {.Left = 10, .Top = 10, .Text = TableNr, .Name = "Button" & TableNr}
    AddHandler Button.Click, AddressOf TableClicked
    Main_Form.GroupBox1.Controls.Add(Button)
End Sub

Private Sub TableClicked(sender As Object, e As EventArgs )
    Dim button = DirectCast(sender, Button)
    Dim tableNumber As String = button.Name.Substring(6)
    ' ...
End Sub

1
投票

您担心与

AddHandler
使用相同的方法,然后当调用该方法时您需要知道单击了哪个按钮。这就是事件处理程序中
sender
参数的作用:

Private Sub CreateButton(TableNr As String, PersonNr As String)
    Dim Button As New Button With {.Left = 10, .Top = 10, .Text = TableNr, .Name = "Button" & TableNr}
    AddHandler Button.Click, AddressOf Table_Click
    Main_Form.GroupBox1.Controls.Add(Button)
End Sub

Private Sub Table_Click(sender As Object, e As EventArgs)
    Dim button As Button = TryCast(sender, Button)
    '...
End Sub

这里唯一缺少的是 PersonNr 和 TableNr 数据,但此时您应该很容易将它们附加到按钮本身。如果您需要推送,一种选择是使用这些附加字段从按钮继承您自己的控件。

© www.soinside.com 2019 - 2024. All rights reserved.