PDA

View Full Version : سوال: كنترل كردن گروهي از Checkbox



hfmmhv_844
دوشنبه 10 خرداد 1389, 12:12 عصر
با سلام خدمت دوستان گرامي

يك سوال

من حدود 50 Checkbox روي فرم درست كرده ام ميخواهم وقتي Button كليك شد همه آنها Uncheck شوند.
ميدونم در VB.net ابتدا بايد آرايه اي از شي فوق ايجاد كرد. اما ميخواهم بدونم راه ديگري هم است يا خير؟

ashkan209
دوشنبه 10 خرداد 1389, 12:51 عصر
For Each ctrl In Me.Controls
If TypeOf (ctrl) Is CheckBox Then
ctrl.Checked = False
End If
Next

hfmmhv_844
دوشنبه 10 خرداد 1389, 13:19 عصر
ضمن تشكر از شما

متغير ctrl از چه نوعي بايد تعريف شود؟

پيغام Unable to cast object of type 'System.Windows.Forms.TabControl' to type 'System.Windows.Forms.CheckBox'. صادر مي شود.

Open-Source
دوشنبه 10 خرداد 1389, 14:06 عصر
باید از جنس کنترل باشه.


For Each ctrl As System.Windows.Forms.Control In Me.Controls
If TypeOf (ctrl) Is CheckBox Then
DirectCast(ctrl, CheckBox).Checked = False
End If
Next

hfmmhv_844
دوشنبه 10 خرداد 1389, 14:17 عصر
ممنونم
ولي متاسفانه جواب نميدهد.
هيچكدوم False نمي شود.
دوستان مراحل كار به اين صورته كه:
- ابتدا Main فرم باز مي شود
-سپس از منوهايي كه ساختم وارد فرم ديگري مي شوم
در آن فرم با كليك بر روي منوي ديگر Tabcontrol خاصيت Visible =True مي شود و Check Box ها در داخل Tab اول كنترل فوق ظاهر مي شوند.
- حال دكمه اي گذاشتم كه كاربر بتواند CheckBox ها را Uncheck كند.

با تشكر

goolestan
دوشنبه 10 خرداد 1389, 14:52 عصر
از چک لیست باکس ویا لیست ویو (ChecklisBox or ListView ) با Foreach استفاده کنید هم راحت تره هم منطق تر

MehdiLiver
دوشنبه 10 خرداد 1389, 16:18 عصر
ممنونم
ولي متاسفانه جواب نميدهد.
هيچكدوم False نمي شود.
دوستان مراحل كار به اين صورته كه:
- ابتدا Main فرم باز مي شود
-سپس از منوهايي كه ساختم وارد فرم ديگري مي شوم
در آن فرم با كليك بر روي منوي ديگر Tabcontrol خاصيت Visible =True مي شود و Check Box ها در داخل Tab اول كنترل فوق ظاهر مي شوند.
- حال دكمه اي گذاشتم كه كاربر بتواند CheckBox ها را Uncheck كند.

با تشكر
منهم این مشکل رو دارم لطفا کمک کنید

hfmmhv_844
دوشنبه 10 خرداد 1389, 16:29 عصر
بالاخره راه حل را پيدا كردم
من checkbox ها را داخل Groupbox گذاشته بودم
از دو تا شمارنده استفاده كردم تا كنترل هاي داخل GroupBox ها هم چك شود.
نمونه كد:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim j, i As Integer
j = 0
i = 0
While j < Me.TabPage1.Controls.Count
For Each ctrl As System.Windows.Forms.Control In Me.TabPage1.Controls(j).Controls
If TypeOf (ctrl) Is CheckBox Then
DirectCast(ctrl, CheckBox).Checked = False
End If
Next
While i < Me.TabPage1.Controls(j).Controls.Count
For Each ctrl As System.Windows.Forms.Control In Me.TabPage1.Controls(j).Controls(i).Controls
If TypeOf (ctrl) Is CheckBox Then
DirectCast(ctrl, CheckBox).Checked = False
End If
Next
i += 1
End While
j += 1
End While
End Sub

ashkan209
دوشنبه 10 خرداد 1389, 18:25 عصر
مشکلی نداره ، بینو ببین

msadgd
یک شنبه 31 مرداد 1389, 11:59 صبح
مشکلی نداره ، بینو ببین

اشکان جان کد شما درست کار میکنه اما اگه چک باکسها توی یک panel یا group باشن این کد روی اونها اعمال نمیشه. چاره چیه؟
ممنون