PDA

View Full Version : حرفه ای: فراخوانی رویداد مربوط به یوزر کنترل در زمان اجرا



nasseritemp
دوشنبه 23 بهمن 1391, 11:10 صبح
سلام.
فرض کنید مجموعه ای از کنترل ها (که همگی نمونه ای از یک یوزرکنترل هستند) به صورت داینامیک در زمان اجرا بر روی فرم توسط کاربر ایجاد شده اند.
سئوال من اینه که چطور میتونیم مثلا رویداد تغییر مکان هر یک از کنترل ها رو فراخوانی کنیم؟(یعنی موقعیت هر کنترل بر روی فرم رو بعد از جابجایی بدست بیاریم)
با تشکر

مهرداد صفا
دوشنبه 23 بهمن 1391, 11:47 صبح
سلام
راه های زیادی برای این کار است.
یک روش تعریف کردن متغیر به صورت withevents است:

'in the name of god
'صل الله علی محمد و آله

Public Class Form1
WithEvents button1 As New Button

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
button1.Text = "ok"
Me.Controls.Add(button1)
End Sub


Private Sub button1_LocationChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles button1.LocationChanged
MsgBox("button1 location changed!")
End Sub
End Class



یک راه هم استفاده از AddHandler است:

'in the name of god
'صل الله علی محمد و آله

Public Class Form1


Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
For i = 1 To 10
Dim b As New Button
b.Name = "button" + i.ToString
b.Text = b.Name
b.Top = i * 60
Me.Controls.Add(b)
AddHandler b.LocationChanged, AddressOf Me.button_LocationChanged
Next

End Sub


Private Sub button_LocationChanged(ByVal sender As Object, ByVal e As System.EventArgs)
MsgBox(sender.name + " location changed! new location=x:" + sender.left.ToString + "y:" + sender.top.ToString)
End Sub
End Class


به هر حال اگر جواب نگرفتید روشی که کنترلها را اضافه میکنید بنویسید و اینکه به چه روشی می خواهید رویداد ها را هندل کنید؟