Private delete_button_RT() As Button
Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
MyBase.OnInit(e)
delete_button_RT = New Button(myTop) {} ' mytop คือ จำนวนแถว
Dim o As Integer
For o = 1 To (myTop * myRight) Step o + 1
If i Mod myRight = 0 Then
Dim delete_RT As Button = New Button
delete_RT.ID = "delete_RT" + (i / myRight).ToString()
delete_RT.Text = "Del"
myPlaceHolder_RT.Controls.Add(delete_RT)
delete_button_RT((i / myRight) - 1) = delete_RT
' ต้องการเขียนคำสั่งให้กดที่ปุ่มแล้วไปเรียกฟังก์ชั่นให้ทำงาน เช่น Call function AAA
End If
Next
End Sub
function AAA
' เช่นถ้าปุ่ม delete_button_RT(ตัวที่ i) ถูกกด ให้ พิมม์ค่า
end function
Private delete_button_RT() As Button
Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
MyBase.OnInit(e)
delete_button_RT = New Button(myTop) {} ' mytop คือ จำนวนแถว
Dim o As Integer
For o = 1 To (myTop * myRight) Step o + 1
If i Mod myRight = 0 Then
Dim delete_RT As Button = New Button
delete_RT.ID = "delete_RT" + (i / myRight).ToString()
delete_RT.Text = "Del"
myPlaceHolder_RT.Controls.Add(delete_RT)
delete_button_RT((i / myRight) - 1) = delete_RT
' ต้องการเขียนคำสั่งให้กดที่ปุ่มแล้วไปเรียกฟังก์ชั่นให้ทำงาน เช่น Call function AAA
End If
Next
End Sub
function AAA
' เช่นถ้าปุ่ม delete_button_RT(ตัวที่ i) ถูกกด ให้ พิมม์ค่า
end function
Private Sub frmTest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CreatButton()
End Sub
Private Sub CreatButton()
Dim btn As New Button
btn.Top = 20
btn.Left = 20
btn.Text = "test"
Me.Controls.Add(btn)
AddHandler btn.Click, AddressOf btn_Click
End Sub
Public Sub btn_Click(ByVal sender As Object, ByVal e As EventArgs)
MsgBox("test")
End Sub
โค้ดข้างบนเป็นแค่ตัวอย่างครับ คุณสามารถใช้ Sub เดียวในการกดปุ่มหลายๆปุ่มก็ได้โดยดูจาก sender ว่า object ไหนเป็นคนสั่ง
ลองดูตัวอย่างครับ (โค้ดด้านบน ผมกำหนดผ่าน Sub ตรงๆ คราวนี้มาลอง Delegate บ้าง) Code (VB.NET)
Private btnHandler As New EventHandler(AddressOf btn_Click)
Private Sub CreatButton()
For i As Integer = 0 To 2
Dim btn As New Button
btn.Top = 20
btn.Left = 20 + i * 100
btn.Text = "test " & i
btn.Name = "btn" & i
Me.Controls.Add(btn)
AddHandler btn.Click, btnHandler
Next
End Sub
Public Sub btn_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim btn As Button = DirectCast(sender, Button)
Select Case btn.Name
Case "btn0"
MsgBox("test first button")
Case "btn1"
MsgBox("test second button")
Case "btn2"
MsgBox("test last button")
Case Else
MsgBox("what")
End Select
End Sub