, - , , Form1.Button1.Click( - ) Form1Handler.
Form1 , , .
?
Form1.Designer.vb: :
Public Partial Class Form1
' ...
Private Button2 As System.Windows.Forms.Button
Private Button1 As System.Windows.Forms.Button
End Class
^^ Private Protected...
Protected WithEvents Button2 As System.Windows.Forms.Button
Protected WithEvents Button1 As System.Windows.Forms.Button
WithEvents, .
IDE (Visual Studio 2010 SharpDevelop) , () "". Form1.Designer.vb. , "WithEvents".
Form1Handler, Form1.
Form1Handler?
, Form1Handler.
Private Sub HandleButtonClick(sender As Object, e As EventArgs)
' Instructions for Clicks goes here...
End Sub
,
Private Sub AddHandlersToButtonClick()
AddHandler Button1.Click, AddressOf HandleButtonClick
AddHandler Button2.Click, AddressOf HandleButtonClick
' Add as many handlers as you wish, calling as many methods as you wish...
End Sub
, Form1Handler :
Private Sub OnForm1Handler_Load() Handles Me.Load
AddHandlersToButtonClick()
End Sub
, Form1Handler, Form1, HandleButtonClick (..) , Button1 Button2.
- , Button3, Panel1... :
' Creates as many methods you wish for each of your Form1 Controls,
' ensuring those controls are declared as Protected in Form1.
Private Sub HandleButton1Click(sender As Object, e As EventArgs)
' ...
Private Sub HandleButton2Click(sender As Object, e As EventArgs)
Private Sub HandleButton3Click(sender As Object, e As EventArgs)
Private Sub HandlePanel1MouseEnter(sender As Object, e As EventArgs)
' Then writes in AddHandlersToButtonClick() the dynamic Events handlers
AddHandler Button1.Click, AddressOf HandleButton1Click
AddHandler Button2.Click, AddressOf HandleButton2Click
AddHandler Button3.Click, AddressOf HandleButton3Click
AddHandler Panel1.MouseEnter, AddressOf HandlePanel1MouseEnter
, 300 ?
! , , , - , IDE:
- Button1 → Tag = 1
- Button2 → = 2
- ...
- Button300 → = 300
- :
Private Sub HandleButtonClick(sender As Object, e As EventArgs)
Dim MyButton As System.Windows.Forms.Button
Dim MyButtonIndex As Integer
If TypeOf(MyButton) Is System.Windows.Forms.Button Then ' You should check it a Button.
MyButton = CType(sender, System.Windows.Forms.Button) ' Option Strict On - Always !
If Integer.TryParse(MyButton.Tag.ToString(), MyButtonIndex) Then
Select Case MyButtonIndex
Case 1:
' Little instruction
Case 2:
' Call a bigger method, with newer parameters
Call HandleMainFormButton1(MyButton, "Houston we have a problem !")
' ...
Case 300:
Call HandleMainFormButton300("Just kidding..!")
Case Else
' This is NOT an indexed Button.
MessageBox.Show("You've forgotten to handle button " + MyButtonIndex.ToString())
End Select
End If
End If
End Sub
^^ CRAZY! 300+ № 300... 300 ...
AddHandler Button1.Click, AddressOf HandleButtonClick
AddHandler Button2.Click, AddressOf HandleButtonClick
AddHandler Button3.Click, AddressOf HandleButtonClick
' ...
AddHandler Button299.Click, AddressOf HandleButtonClick
AddHandler Button300.Click, AddressOf HandleButtonClick