Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles _
CheckBox1.CheckedChanged, CheckBox2.CheckedChanged,
CheckBox3.CheckedChanged, CheckBox4.CheckedChanged,
CheckBox5.CheckedChanged, CheckBox6.CheckedChanged,
CheckBox7.CheckedChanged, CheckBox8.CheckedChanged,
CheckBox9.CheckedChanged, CheckBox10.CheckedChanged
Dim Ce1 As Int16 = 0
For Each ctrl As Control In Me.Controls
If TypeOf ctrl Is CheckBox Then
If CType(ctrl, CheckBox).Checked = True Then Ce1 += 1
End If
Next
TextBox1.Text = Ce1.ToString
End Sub
أو بحسب (Linq) :
كود :
Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles _
CheckBox1.CheckedChanged, CheckBox2.CheckedChanged,
CheckBox3.CheckedChanged, CheckBox4.CheckedChanged,
CheckBox5.CheckedChanged, CheckBox6.CheckedChanged,
CheckBox7.CheckedChanged, CheckBox8.CheckedChanged,
CheckBox9.CheckedChanged, CheckBox10.CheckedChanged
TextBox1.Text = (From cb In Controls.OfType(Of CheckBox)()
Where cb.Checked
Order By cb.Text
Select cb.Checked).Count
شكرا جزيلا أخ طه ربنا يبارك فيك و يحفظك و يسعدك ان شاء الله .فقط أخ طه اعذرني ان لم أكتب ملاحظة أنه عندي مجموعة اخرى من التشك بكس على الفورم ولا اريدها ان تددخل في الحساب . هل من الممكن ان اتجنب عبارة for each control لانها الكود سوف يحتسبلي كل التشكات بكس يلي على الفورم يعني ممكن بعد اذنك احسب بطريقة اخرى و بارك الله فيك
Private Sub CheckBox1_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles _ CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged, CheckBox4.CheckedChanged, CheckBox5.CheckedChanged
Dim checks() As CheckBox = {CheckBox1, CheckBox2, CheckBox3, CheckBox4, CheckBox5}
TextBox1.Text = (From cb In checks Where cb.Checked Order By cb.Text Select cb.Checked).Count End Sub
Private Sub CheckBox6_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles _ CheckBox6.CheckedChanged, CheckBox7.CheckedChanged, CheckBox8.CheckedChanged, CheckBox9.CheckedChanged, CheckBox10.CheckedChanged
Dim checks() As CheckBox = {CheckBox6, CheckBox7, CheckBox8, CheckBox9, CheckBox10}
TextBox2.Text = (From cb In checks Where cb.Checked Order By cb.Text Select cb.Checked).Count End Sub
بالرغم من أن طريقة الأخ (Zuhare ) هي الأبسط والأفضل،،
ولكن يمكنك التعديل على الكود السابق بحيث :
لو أن ما تريد العمل عليه تعيد تسميته بإضافة رمز ما (g) مثلا فيصبح(gCheckBox) لكل واحدة منها،
فيصبح الكود :
كود :
Private Sub gCheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles _
gCheckBox1.CheckedChanged, gCheckBox2.CheckedChanged,
gCheckBox3.CheckedChanged, gCheckBox4.CheckedChanged,
gCheckBox5.CheckedChanged, gCheckBox6.CheckedChanged,
gCheckBox7.CheckedChanged, gCheckBox8.CheckedChanged,
gCheckBox9.CheckedChanged, gCheckBox10.CheckedChanged
TextBox1.Text = (From cb In Controls.OfType(Of CheckBox)()
Where cb.Checked And cb.Name.Contains("gCheckBox")
Order By cb.Text
Select cb.Checked).Count
End Sub
ملاحظة : كان بإمكانك التفكير بأحد هذه الطرق على نفس الكود لكن لعدم اهتمامك بالأساسيات، لم تفهم الكود وقمت بالتطبيق ووتظن أنه حالة خاصة..
مع العلم أن ما قمنا عليه أنا والأخ (Zuhare ) هو تغيير بسيط ع نفس الكود .. وأعطى نتيجة مختلفة وكما نريد بالضبط ..
يفضل أن تقوم دوما ودوريا بمشاهدة فيديوهات لشرح الأساسيات في الفيجول بيزك وغيرها (الخوارزميات على أي لغة) وستتعلم منها الكثير الكثير ..