PDA

View Full Version : استفاده از AddressOf در AddHandler با پارامتر



daniyal_13
چهارشنبه 29 آبان 1398, 13:02 عصر
سلام میخواستم بدونم چه جوری میتونم این کار رو بکنم




Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim tt As New Timer


AddHandler tt.Tick, AddressOf timer_tick(پارامتر مورد نظرم)
tt.Interval = 1000
tt.Enabled = True




End Sub


Sub timer_tick(ورودی که میخوام)




End Sub




اینکار الان خطا میده، راه درستش چیه، اگه میشه با درست همین رو بگین که متوجه بشم !!!!

ممنون از همه

the king
چهارشنبه 29 آبان 1398, 14:20 عصر
سلام میخواستم بدونم چه جوری میتونم این کار رو بکنم




Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim tt As New Timer


AddHandler tt.Tick, AddressOf timer_tick(پارامتر مورد نظرم)
tt.Interval = 1000
tt.Enabled = True




End Sub


Sub timer_tick(ورودی که میخوام)




End Sub




اینکار الان خطا میده، راه درستش چیه، اگه میشه با درست همین رو بگین که متوجه بشم !!!!

ممنون از همه
زمانی که شما روی Button2 کلیک می کنید هنوز رخداد Tick ای صورت نگرفته، برای همین بی معنیه که همون موقع بخواهیم به timer_tick پارامتری ارسال کنیم. از طرف دیگه رخداد Tick پارامتر هاش بصورت (sender As Object, e As EventArgs) ئه و
نمی توانید به حالتی مثل timer_tick(my_parameter) فراخوانیش کنید.
کاری که معمولا انجام میشه اینه :


Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim tt As New Timer
AddHandler tt.Tick, AddressOf timer_tick
tt.Interval = 1000
tt.Enabled = True
End Sub

Private Sub timer_tick(sender As Object, e As EventArgs)

End Sub


و چون شما میخواهید timer_tick بتونه از مقداری استفاده کنه، می توانید با tt.Tag بهش مقداری بدید :


Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim tt As New Timer
tt.Tag = "پارامتر مورد نظر شما"
AddHandler tt.Tick, AddressOf timer_tick
tt.Interval = 1000
tt.Enabled = True
End Sub

Private Sub timer_tick(sender As Object, e As EventArgs)
Dim your_parameter = CType(sender, Timer).Tag
End Sub


پارامتری که داخل tt.Tag قرار میدید میتونه از هر نوعی باشه، حتی میتونه آرایه ای باشه تا چند پارامتر رو بهش ارسال کنید :


Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim tt As New Timer
tt.Tag = {"بابک", Color.Yellow, 18}
AddHandler tt.Tick, AddressOf timer_tick
tt.Interval = 1000
tt.Enabled = True
End Sub

Private Sub timer_tick(sender As Object, e As EventArgs)
Dim your_parameter = CType(sender, Timer).Tag
Dim name = your_parameter(0)
Dim color = your_parameter(1)
Dim age = your_parameter(2)
Button2.Text = name + " - " + CStr(age)
Button2.BackColor = color
End Sub

daniyal_13
چهارشنبه 29 آبان 1398, 14:30 عصر
خیلی خوب توضیح دادین کاملا متوجه شدم، بسیار ممنون