السلام عليكم ورحمة الله وبركاته ،،
وفقنا الله لكل خير إخواني الأعزاء ..
لدي الكثير من أدوات CheckBox ، ولدي رقم معين متغير في كثير من الأحوال كيف استطيع التوفيق في حالة أنه اذا كان الرقم 5 يتم عرض فقط 5 أدوات CheckBox وإذا تغير الرقم إلى 10 يتم عرض 10 أدوات وإذا تغير إلى 2 يتم عرض 2 أداة فقط والبقية تختفي ؟
استطيع ان اكتب شفرة لحل هذه المشكلة بحيث تكون عبارة عن أسطر كثيرة جداً بطريقة بدائية لكن أريد أن تكون الشفرة ذو مرونة وأريد ان اتعلم هذه المرونة فهل من طريقة مبتكرة لمثل هذا الأمر.
علماً أن CheckBox مسمياتهم متتالية 1و2و3و4و5و6 ..الخ
السلام عليكم،
أخي يمكنك أستخدام أداة CheckedListBox
أخي الكريم
تستطيع أن تقوم بتعريف مصفوفة من نوع CheckBox
وتقوم بتحديد العناصر فيها حسب العدد المطلوب
Aly El-Haddad كتب :السلام عليكم،
أخي يمكنك أستخدام أداة CheckedListBox
سأجعلها خيار لاحق ،،
sooriaty03 كتب :أخي الكريم
تستطيع أن تقوم بتعريف مصفوفة من نوع CheckBox
وتقوم بتحديد العناصر فيها حسب العدد المطلوب
حاولت ولم أفلح ربما لأني لم اكتب الشفرات بصيغة صحيحة ..
الآن عندما أكتب هذا الصيغة : Dim checkbox() As CheckBox
ولدي متغير يحمل الرقم 4 ,, Dim x as Integer = 4
ولدي حوال 10 CheckBox على النموذج ،، عندما يتم تحميل النموذج كيف لي أن أخفي آخر 6 CheckBox من النموذج بناءاً على المتغير x
أخي الكريم
في البداية نقوم بتعريف مصفوفة في قسم التصريحات العام
كما يلي :
كود :
Public Class Form1
Dim CheckList As New List(Of CheckBox)
'
'
End Class
وبعدها نقوم بإضافة أدوات Checkbox إليها في حدث Form_Load بهذه الطريقة
كود :
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For Each CHBOX In Me.Controls.OfType(Of CheckBox).Reverse
CheckList.Add(CHBOX)
Next
End Sub
وأخيرا في حدث TextBox1_TextChanged نكتب التالي
كود :
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
For I = 0 To CheckList.Count - 1
If I < TextBox1.Text Then
CheckList.Item(I).Visible = True
Else
CheckList.Item(I).Visible = False
End If
Next
End Sub
طبعا الكود الأخير أنت مخير في مكان وضعه ليس شرطا أن يكون داخل حدث TextBox1_TextChanged
وهذا الكود بالكامل
كود :
Public Class Form1
Dim CheckList As New List(Of CheckBox)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For Each CHBOX In Me.Controls.OfType(Of CheckBox).Reverse
CheckList.Add(CHBOX)
Next
End Sub
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
For I = 0 To CheckList.Count - 1
If I < TextBox1.Text Then
CheckList.Item(I).Visible = True
Else
CheckList.Item(I).Visible = False
End If
Next
End Sub
End Class
بالتوفيق
حسناً، ما دمت مصمم على أستخدام المصفوفة فإليك ما تريد بالمرفقات :p
sooriaty03 كتب :أخي الكريم
في البداية نقوم بتعريف مصفوفة في قسم التصريحات العام
كما يلي :
كود :
Public Class Form1
Dim CheckList As New List(Of CheckBox)
'
'
End Class
وبعدها نقوم بإضافة أدوات Checkbox إليها في حدث Form_Load بهذه الطريقة
كود :
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For Each CHBOX In Me.Controls.OfType(Of CheckBox).Reverse
CheckList.Add(CHBOX)
Next
End Sub
وأخيرا في حدث TextBox1_TextChanged نكتب التالي
كود :
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
For I = 0 To CheckList.Count - 1
If I < TextBox1.Text Then
CheckList.Item(I).Visible = True
Else
CheckList.Item(I).Visible = False
End If
Next
End Sub
طبعا الكود الأخير أنت مخير في مكان وضعه ليس شرطا أن يكون داخل حدث TextBox1_TextChanged
وهذا الكود بالكامل
كود :
Public Class Form1
Dim CheckList As New List(Of CheckBox)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For Each CHBOX In Me.Controls.OfType(Of CheckBox).Reverse
CheckList.Add(CHBOX)
Next
End Sub
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
For I = 0 To CheckList.Count - 1
If I < TextBox1.Text Then
CheckList.Item(I).Visible = True
Else
CheckList.Item(I).Visible = False
End If
Next
End Sub
End Class
بالتوفيق
عفواً أخي sooriaty03 لم أنتبه لمشاركتك
Aly El-Haddad كتب :عفواً أخي sooriaty03 لم أنتبه لمشاركتك
لا يا أخي الكريم
إضافتك لهذه المشاركة فيه إثراء للموضوع
شكرا لك