المشاركات : 2,523
المواضيع 707
الإنتساب : Sep 2012
السمعة :
48
الشكر: 91
تم شكره 1103 مرات في 296 مشاركات
كاتب الموضوع : BADRMEDIA
الأداة : ListBox
لقد قمنا بشرح الأداة CheckBox من حيث النقاط الهامة وحان دور شرح الأداة ListBox
وهي مثلها فهي تحمل عدة عناصر لكن بصورة ظاهرة للمستخدم
تفيد فى مجموعة اختيارات - مثلا المستخدم أن يحدد الأصناف مثلاً
===================================
الأداة تعمل حاضنة كنطاق
مثل فكرة ComboBox تعمل كحاضنة لمجموعة من TextBox فى صورة عناصر لها فهرس
ضع الأداة ListBox من صندوق الأدوات واضبطها على الفورم
اكتب فى حدث التحميل للفورم هذا الكود
كود :
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ListBox1.Items.Add("A")
ListBox1.Items.Add("B")
ListBox1.Items.Add("C")
ListBox1.Items.Add("D")
ListBox1.Items.Add("E")
End Sub
ما قمنا به هو أننا أضفنا عناصر للأداة ListBox عن طريق الخاصية Item واستخدام Add
الأمر كما نري مثل ComboBox ويمكن القيام بذلك عن طريق نافذة الخصائص للأداة واستخدام الخاصية Items
المشاركات : 2,523
المواضيع 707
الإنتساب : Sep 2012
السمعة :
48
الشكر: 91
تم شكره 1103 مرات في 296 مشاركات
لقد أضفنا العناصر عن طريق الخاصية Add التابعة للخاصية Item المسئولة عن العناصر
لكن ماذا لو كان الذى سيضاف ليس عنصر عنصر بل نطاق غير محدد
سيكون علينا استخدام AddRange كاضافة نطاق
كود :
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim strDataRange() As String = {"A", "B", "C", "D", "E"}
ListBox1.Items.AddRange(strDataRange)
End Sub
قمنا بتعريف متغير نصي كمصفوفة ذات بعد محدد strDataRange
وادخلنا لها قيم مباشرة
وارسلناها للخاصية AddRange
المشاركات : 2,523
المواضيع 707
الإنتساب : Sep 2012
السمعة :
48
الشكر: 91
تم شكره 1103 مرات في 296 مشاركات
انظر للصورة هناك ثلاث عناصر أضفناها هكذا
كود :
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim strDataRange() As String = {"B", "D", "R"}
ListBox1.Items.AddRange(strDataRange)
End Sub
العناصر تكون كلمة BADR
لكن هناك حرف ناقص أى عنصر ناقص
ماذا لو أردت ان تضعه فى مكانه الصحيح
كود :
ListBox1.Items.Insert(2, "A")
الخاصية Insert التابعة للخاصية Items ونرسل معها مكان العنصر من حيث الترتيب وهو الثاني هنا أيضاً اسم العنصر الظاهر للمستخدم وهو A
المشاركات : 2,523
المواضيع 707
الإنتساب : Sep 2012
السمعة :
48
الشكر: 91
تم شكره 1103 مرات في 296 مشاركات
على غرار قضية Insert ننظر لهذا الكود
كود :
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim strDataRange() As String = {"B", "A", "A", "D", "R"}
ListBox1.Items.AddRange(strDataRange)
End Sub
نجد أن حرف A مكرر من كلمة BADR يعنى هناك عنصر زيادة
لو أردنا حذفه
ممكن نستخدم الخاصية Remove التابعة للخاصية Items هكذا
كود :
ListBox1.Items.Remove("A")
لكن هى لن تزيل حرف أى عنصر واحد بل ستزيل كل ما هو يحمل اسم A
إذا علينا أن نحدد موقع المراد حذفه - فنستخدم الخاصية RemoveAt
كود :
ListBox1.Items.RemoveAt(2)
المشاركات : 2,523
المواضيع 707
الإنتساب : Sep 2012
السمعة :
48
الشكر: 91
تم شكره 1103 مرات في 296 مشاركات
هناك خواص خاصة بالزالق الأفقي والرأسي للأداة من نافذة الخصائص الخاصة بها
مثلا لو أردنا أن نظهر الزالق الأفقي
كود :
ListBox1.HorizontalScrollbar = True
=======================================
لو أردنا أن نعرف عدد العناصر داخل الأداة ListBox
عن طريق الخاصية Count التابعة للخاصية Items
كود :
MsgBox(ListBox1.Items.Count)
=====================================
ربما تريد أن تختار عنصر محدد - ذلك أمر يسير
من الخاصية SetSelected للأداة
ترسل رقم العنصر وأيضاً ترسل هل تريد اختياره أم لا
True Or False
كود :
ListBox1.SetSelected(3, True)
المشاركات : 2,523
المواضيع 707
الإنتساب : Sep 2012
السمعة :
48
الشكر: 91
تم شكره 1103 مرات في 296 مشاركات
انظر للصورة جيداً
الخاصية SelectionMode
تجدها فى نافذة الخصائص للأداة
بها أربع اختيارات
MultiExtended
تمكنك من اختيار أكثر من عنصر عن طريق اختيار العنصر مع الضغط على زر Control
MultiSimple
تمكنك من اختيار أكثر م نعنصر دون الضغط على أى زر
None
لا تسمح لك باختيار أى عنصر
One
يكون الاختيار لعنصر أوحد فقط
كود :
ListBox1.SelectionMode = SelectionMode.MultiExtended
ListBox1.SelectionMode = SelectionMode.MultiSimple
ListBox1.SelectionMode = SelectionMode.None
ListBox1.SelectionMode = SelectionMode.One
المشاركات : 2,523
المواضيع 707
الإنتساب : Sep 2012
السمعة :
48
الشكر: 91
تم شكره 1103 مرات في 296 مشاركات
طبعاً تحدثنا عن الخاصية SetSelected
وكيف نحدد عنصر محدد
كود :
ListBox1.SetSelected(2, True)
نرسل رقم الفهرس وهل يتم التحديد أم لا
لنري هذا الكود
كود :
For I As Integer = 0 To ListBox1.Items.Count - 1
ListBox1.SetSelected(I, True)
Next
يقوم بعمل حلقة For لتحديد كل عناصر الأداة ListBox1
لكن هل سيعمل بالطبع لا إلا إذا كنا غير الخاصية SelectionMode كما شرحناها
كود :
ListBox1.SelectionMode = SelectionMode.MultiSimple
المشاركات : 2,523
المواضيع 707
الإنتساب : Sep 2012
السمعة :
48
الشكر: 91
تم شكره 1103 مرات في 296 مشاركات
الخاصية ClearSelected
تمسح كل الاختيارات
كود :
ListBox1.ClearSelected()
==========================================
الأداة بها عدة عناصر
المستخدم يختار منها
العنصر الثالث له ارتباط معين بحدث معين
تريد ان تتأكد هل تم اختيار العنصر الثالث أم لا
الخاصية GetSelected
كود :
If ListBox1.GetSelected(2) Then
MessageBox.Show("Do")
Else
MessageBox.Show("Un Do")
End If
لا تنسي أن العناصر تأخذ فهرس يبدأ من صفر لذلك رقم الفهرس هنا 2 هو للعنصر 3
المشاركات : 2,523
المواضيع 707
الإنتساب : Sep 2012
السمعة :
48
الشكر: 91
تم شكره 1103 مرات في 296 مشاركات
فى حالة وجود أكثر من اختيار بمعنى أن الخاصية SelectionMode = MultiSimple
كود :
ListBox1.SelectionMode = SelectionMode.MultiSimple
أردنا أن نعرف عدد التحديدات للعناصر
كود :
MessageBox.Show(ListBox1.SelectedItems.Count.ToString)
اى أننا استخدمنا الخاصية Count التابعة للخاصية SelectedItems لنعرف عدد العناصر المحددة
============================================
لو أردنا أن نظهر رقم الفهرس للعنصر المحدد
كود :
MessageBox.Show((ListBox1.SelectedIndex + 1).ToString())
المشاركات : 2,523
المواضيع 707
الإنتساب : Sep 2012
السمعة :
48
الشكر: 91
تم شكره 1103 مرات في 296 مشاركات
الخاصية FindString
يمكن عن طريقها أن أبحث عن عنصر وأجعلها = True
كود :
Dim index As Integer = ListBox1.FindString("A")
ListBox1.SelectedIndex(index)
نقوم بتكوين متغير رقمى ونجعله يساوي فهرس العنصر الذى سنجده بالبحث عن طريق الخاصية
FindString بعد أن أرسلنا لها اسم العنصر المطلوب البحث عنه أو حروف من اسمه
ثم قمنا باستخدام الخاصية SelectedIndex كما شرحناها من قبل
|