منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
حساب عدد الشيك بكس - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : حساب عدد الشيك بكس (/showthread.php?tid=50582)



حساب عدد الشيك بكس - العيدروس - 05-11-24

السلام عليكم 
اخواني اريد كلما اقوم بالتشييك على اي تشك بكس يظهر بالتاكست بكس 1 مجموع التشيك بوكس المشيك عليها 
بارك الله فيكم


RE: حساب عدد الشيك بكس - Taha Okla - 06-11-24

وعليكم السلام ورحمة الله وبركاته

إما الحل العادي :
كود :
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

End Sub



RE: حساب عدد الشيك بكس - العيدروس - 06-11-24

شكرا جزيلا أخ طه ربنا يبارك فيك و يحفظك و يسعدك ان شاء الله .فقط أخ طه اعذرني ان لم أكتب ملاحظة أنه عندي مجموعة اخرى من التشك بكس على الفورم ولا اريدها ان تددخل في الحساب . هل من الممكن ان اتجنب عبارة for each control لانها الكود سوف يحتسبلي كل التشكات بكس يلي على الفورم يعني ممكن بعد اذنك احسب بطريقة اخرى و بارك الله فيك


RE: حساب عدد الشيك بكس - Taha Okla - 06-11-24

تخيل أن هناك اختراع اسمه الـ (GroupBox) ضع واحدة على النافذة واجعل اسمها مثلاً (GroupBox1) واسحب ما تريد التنفيذ عليها من ال(CheckBox) ضمنها

ثم عدل الكود بحيث يصبح : 

كود :
For Each ctrl As Control In Me.GroupBox1.Controls



RE: حساب عدد الشيك بكس - العيدروس - 06-11-24

الطريقة لا تنفع اخي طه لاني ساوزعهم على مناطق كثيرة على صورة الخريطة و مع ذلك بارك الله فيك و جزاك خيرا و رزقك من حيث لا تحتسب ما قصرت


RE: حساب عدد الشيك بكس - Zuhare - 06-11-24

طريقة ثانية  لكود الأخ(Taha Okla)
PHP كود :
Public Class Form1

    Private Sub CheckBox1_CheckedChanged
(ByVal sender As ObjectByVal e As EventArgsHandles _
                                            CheckBox1
.CheckedChangedCheckBox2.CheckedChanged,
 
                                           CheckBox3.CheckedChangedCheckBox4.CheckedChanged,
 
                                           CheckBox5.CheckedChanged

        Dim checks
() As CheckBox = {CheckBox1CheckBox2CheckBox3CheckBox4CheckBox5}

 
       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 ObjectByVal e As EventArgsHandles _
                                            CheckBox6
.CheckedChangedCheckBox7.CheckedChanged,
 
                                           CheckBox8.CheckedChangedCheckBox9.CheckedChanged,
 
                                           CheckBox10.CheckedChanged

        Dim checks
() As CheckBox = {CheckBox6CheckBox7CheckBox8CheckBox9CheckBox10}

 
       TextBox2.Text = (From cb In checks
                    Where cb
.Checked
                    Order By cb
.Text
                    Select cb
.Checked).Count
    End Sub

End 
Class 



RE: حساب عدد الشيك بكس - Taha Okla - 06-11-24

بالرغم من أن طريقة الأخ (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 ) هو تغيير بسيط ع نفس الكود .. وأعطى نتيجة مختلفة وكما نريد بالضبط ..
يفضل أن تقوم دوما ودوريا بمشاهدة فيديوهات لشرح الأساسيات في الفيجول بيزك وغيرها (الخوارزميات على أي لغة)  وستتعلم منها الكثير الكثير ..


RE: حساب عدد الشيك بكس - العيدروس - 06-11-24

شكرا لكما الاخ Zuhare و الاخ طه و جزاكما كل خير ان شاء الله