2013-09-23 57 views
2

我正在嘗試爲餐館製作一個程序,允許他們在程序中添加和刪除表格。 我的想法是,有一個名爲「添加表」的按鈕,將生成一個名稱作爲表號的按鈕,並且新創建的按鈕將具有一個函數或子項(我對此尚不確定,工作正在進行中)AdressOf鏈接到其他類?

事情是,我已經找到了如何動態添加按鈕,但我對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 

末級

回答

4

可以使用AddressOf operato R鍵編程方式添加事件處理程序。所以你可以爲你的所有按鈕使用一個處理程序。您可以使用Sender參數identfiy按鈕:

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 
+0

所以我可以把我需要的任何代碼放在TableClicked方法中,我的動態按鈕都會對此做出響應?正確? Thx快速回復 – Vahx

+0

@Vahx:是的,你可以把logig放在這裏,當用戶點擊其中一個按鈕時應該執行。 –

0

你擔心使用相同的方法與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數據,但在這一點上應該是很容易讓你連接那些按鈕本身。如果你需要推送,一種選擇是從這些附加字段繼承你自己的控制按鈕。

+0

我很抱歉,但我不確定您要在這裏展示給我的內容。我可以做到這一點沒有AddHandler和AdressOf?還是那些現在添加到table_click方法的? – Vahx