Vb.net AdressOf链接到其他类?

Vb.net AdressOf链接到其他类?,vb.net,visual-studio,Vb.net,Visual Studio,我正在尝试为餐馆制作一个程序,允许他们在程序中添加和删除桌子。 我的想法是,有一个名为“add table”的按钮,它将生成一个名为表号的按钮,新创建的按钮将包含一个函数或子函数(我还不太确定,正在工作) 问题是,我已经找到了如何动态添加按钮,但我对地址部分感到困惑 我是否需要使用adressOf part链接所需的方法或以其他方式完成的方法 Public Class Form_Create_Button Private Sub Button1_Click(sender As Object,

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

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

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

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
End Class

您可以使用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
您可以使用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

您担心对
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数据,但在这一点上,您应该很容易将它们附加到按钮本身。如果您需要一个按钮,一个选项是从按钮继承您自己的控件以及这些附加字段。

您担心使用与
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数据,但在这一点上,您应该很容易将它们附加到按钮本身。如果您需要一个按钮,一个选项是从按钮继承您自己的控件以及这些附加字段。

这样我就可以在TableClicked方法中输入所需的任何代码,而我的动态按钮都会响应它?对的太赫兹快餐reply@Vahx:是的,您可以在此处放置登录,当用户单击其中一个按钮时应执行该登录。因此,我可以在TableClicked方法中放置所需的任何代码,我的动态按钮都将响应该登录?对的太赫兹快餐reply@Vahx:是的,您可以将用户单击其中一个按钮时应执行的登录放在此处。很抱歉,我不确定您要在此处向我显示什么。没有AddHandler和AdressOf我也能做到?或者这些是现在添加到table_click方法中的吗?很抱歉,我不确定您想在这里向我展示什么。没有AddHandler和AdressOf我也能做到?还是现在就将这些添加到表\u click方法中?