PDA

View Full Version : دسترسی به رویدادهای اشیا آرایه ای



maryam_vb
دوشنبه 28 آبان 1386, 14:16 عصر
سلام:متفکر:

من آرایه ای از label تعریف کردم که هنگام لود شدن روی فرم ظاهر میشن و هنگام طراحی دسترسی بهشون ندارم ، حالا چه جوری میتونم با رویدادهاش کار کنم؟

ice007
دوشنبه 28 آبان 1386, 15:29 عصر
dim lbl as new label
addhandler lbl.event,addressof subname

maryam_vb
دوشنبه 28 آبان 1386, 15:32 عصر
لطفا کمی بیشتر توضیح بدین.

ice007
دوشنبه 28 آبان 1386, 15:39 عصر
گفتید label ها رو در لود می سازید بنا براین به رویدادهاش دسترسی ندارید با فرض درست بودن برداشت من از کار شما، شما باید در هنگام ساخت لیبل با دستور گفته شده بالا به لیبل ها تون event اضافه کنید . در دستور بالا event مثلا می تونه کلیک، یا هر چیز دیگه باشه و subname ادرس sub که با اتفاق افتادن این event ، صدا زده شه.

amirsajjadi
دوشنبه 28 آبان 1386, 15:45 عصر
با سلام
دوستمون درست میگه ولی درواقع شما باید یک event اولیه داشته باشید به این صورت شما میتونید برنامتون رو بنویسید

Private WithEvents LbL As Label
Dim a As New Label

PrivateSub LbL_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles LbL.Click
MsgBox(CType(sender, Label).Name)
EndSub

PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
a.Name = "l1"
a.Text = "abc"
Me.Controls.Add(a)
AddHandler a.Click, AddressOf LbL_Click
End Sub

ice007
دوشنبه 28 آبان 1386, 15:50 عصر
با سلام در این کدی که شما نوشتید ما ایونتها را برای لیبل a داریم و نیازی به تعریف event نداریم مشکل زمانیه که ما label رو هم درون load بسازیم و به تعداد که در این صورت دیگه این رو Handles LbL.Clickنمی تونیم داشته باشیم
فکر کنم کد زیر جواب بده. البته کد بالا هم درسته فقط دو خط اضافه داره





PrivateSub LbL_Click(ByVal sender As Object, ByVal e As System.EventArgs)
MsgBox(CType(sender, Label).Name)
EndSub

PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

for i as integer=0 to 10

Dim a As New Label
AddHandler a.Click, AddressOf LbL_Click
a.Name = "l1"
a.Text = "abc"
Me.Controls.Add(a)

next
End Sub