PDA

View Full Version : تخصیص کنترل ها به یک رویداد



visual_sadegh
دوشنبه 22 مهر 1387, 13:09 عصر
با سلام
من توی فرمم یک گروپ باکس ساختم که توی اون 50 تا چک باکس گزاشتم
می خوام وقتی کاربر روی هر کدام ار این ها کلیک کرد یک رویداد اجرا بشه
منظورم اینه که تمام کلیک ها به یک رویداد اشاره کنه، این کار قبلا توی وی بی 6 ساده بود و با آرایه کردن کنترل ها کار ساده می شد.ولی توی دات نت نمی دونم چطوری می شه؟

baran_mehr
دوشنبه 22 مهر 1387, 14:18 عصر
این به ذهن من رسید شاید خوب نباشه.
میتونی یک رویداد یا تابع بنویسی و همه کنترولهاتو به اون مرتبط کنی.

rooshan2008
دوشنبه 22 مهر 1387, 14:23 عصر
با سلام

در حالت طراحی از این روش :




PrivateSub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged, TextBox1.TextChanged


EndSub



حالا اگر در حالت اجرا می خوای انتصاب بدی از این کد :






Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AddHandler TextBox1.TextChanged, AddressOf Roshanfekr
AddHandler TextBox2.TextChanged, AddressOf Roshanfekr
End Sub


این هم کد پردازه مشترک


Private Sub Roshanfekr(ByVal sender As System.Object, ByVal e As System.EventArgs)
msgbox (sender.name)
End Sub








امید وارم کمکت کرده باشم...

baran_mehr
دوشنبه 22 مهر 1387, 14:51 عصر
سلام داداش rooshan2008 جان.
میشه کمی درباره قسمت دوم کدت توضیح بدی.که چی کار میکنه؟

AddHandler TextBox1.TextChanged, AddressOf Roshanfekr
AddHandler TextBox2.TextChanged, AddressOf Roshanfekr

rooshan2008
دوشنبه 22 مهر 1387, 15:04 عصر
سلام داداش rooshan2008 جان.
میشه کمی درباره قسمت دوم کدت توضیح بدی.که چی کار میکنه؟

میگه رویداد TextChangeشی textbox1 رو به این پردازه(Roshanfekr) متصل کن
میگه رویداد TextChangeشی textbox2 رو به این پردازه(Roshanfekr) متصل کن

حالا هر دوتا شی به یک پردازه متصل شدن و هر وقت متن داخل هر کدوم از این دوتا شی تغییر کنه پردازه Roshanfekr اجرا میشه

baran_mehr
دوشنبه 22 مهر 1387, 15:13 عصر
ممنون داداشی.
من یک سری سوال برام پیش امد. برای اینکه حق دوستمون رو ضایع نکنم سوالم رو توی یک تایپیک جدید مینویسم اگر ممکنه اونجا یه سر بزنید.مرسی

mostafaaa
دوشنبه 22 مهر 1387, 17:54 عصر
با این کد میتونی این کار رو انجام بدی.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For Each CTRL As Control In Me.GroupBox1.Controls
If TypeOf CTRL Is CheckBox Then
AddHandler TryCast(CTRL, CheckBox).CheckedChanged, AddressOf CheckBoxClick
End If
Next
End Sub
Private Sub CheckBoxClick(ByVal sender As CheckBox, ByVal e As EventArgs)
If sender.Checked Then
MsgBox("Your Code Here")
End If
End Sub

visual_sadegh
سه شنبه 23 مهر 1387, 08:43 صبح
ممنون از جوابتون
trycast برای چه کاری بکار میره؟
آیا واقعا لازمه؟

mostafaaa
سه شنبه 23 مهر 1387, 09:20 صبح
با متد TryCast ما کنترلمون رو که در واقع یه شی عمومی هستش رو تبدیل به CheckBox کردیم، تا بتونیم ایونت CheckedChange رو هندل کنیم.