PDA

View Full Version : رویداد Click برای تمام Button های فرم



javad2000
چهارشنبه 04 مهر 1386, 08:40 صبح
سلام
آیا امکان داره یه رویداد Click بنویسیم که بدون در نظر گرفتن نام Button های موجود در فرم، برای تمام اونها عمل کنه؟
یعنی حتی اگر بعداً در حالت RunTime از طریق کد، یک Button رو به فرم اضافه کردیم، با کلیک روی اون Button رویداد کلیک مربوطه اجرا بشه؟

با سپاس

sm4899
چهارشنبه 04 مهر 1386, 08:59 صبح
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click, Button1.Click, Button3.Click, Button2.Click


MsgBox(sender.ToString)

EndSub

javad2000
پنج شنبه 05 مهر 1386, 01:39 صبح
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click, Button1.Click, Button3.Click, Button2.Click


MsgBox(sender.ToString)

EndSub




سلام
حالا اگه من در حالت Runtime یه دکمه به نام Button6 اضافه کنم، یعنی بنویسم:
Dim Button6 as New Button

اون هم می تونه ایونت کلیک داشته باشه؟
یعنی اصلاً آیا میشه یه Click_Event نوشت که نام دکمه ها رو داخل اون نیاورده باشیم و خود به خود برای تمام دکمه ها عمل کنه؟

با تشکر

Alireza_Salehi
پنج شنبه 05 مهر 1386, 04:35 صبح
اگر تابع مدیریت رویداد این طوری باشه:

Private Sub MyClickHandler(ByVal sender As System.Object, ByVal e As System.EventArgs)
'Handling Code ...
End Sub

در حالت Runtime برای مشخص کردن EventHandler برای رویداد های یک کنترل به صورت زیر عمل می کنند:


AddHandler Button1.Click, AddressOf MyClickHandler

با این فرمت:


AddHandler [ControlName].[EventName], AddressOf [EventHandlerName]

niksoft
پنج شنبه 05 مهر 1386, 04:38 صبح
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim btnTest1 As New Button
Dim btnTest2 As New Button
btnTest1.Name = "btnTest1"
btnTest2.Name = "btnTest2"

btnTest2.Top = 30
Me.Controls.Add(btnTest1)
Me.Controls.Add(btnTest2)

For Each btn As Control In Me.Controls
If TypeOf btn Is Button Then
AddHandler btn.Click, AddressOf btnTest_Click
End If
Next
End Sub

Private Sub btnTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
MsgBox(CType(sender, Button).Name)
End Sub

javad2000
پنج شنبه 05 مهر 1386, 14:54 عصر
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim btnTest1 As New Button
Dim btnTest2 As New Button
btnTest1.Name = "btnTest1"
btnTest2.Name = "btnTest2"

btnTest2.Top = 30
Me.Controls.Add(btnTest1)
Me.Controls.Add(btnTest2)

For Each btn As Control In Me.Controls
If TypeOf btn Is Button Then
AddHandler btn.Click, AddressOf btnTest_Click
End If
Next
End Sub

Private Sub btnTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
MsgBox(CType(sender, Button).Name)
End Sub

واقعاً ممنون
دقیقاً همینو می خواستم.