تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
معلومة ::: ListBox
#1
كاتب الموضوع : 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
لقد أضفنا العناصر عن طريق الخاصية 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
}}}
تم الشكر بواسطة:
#3
انظر للصورة هناك ثلاث عناصر أضفناها هكذا



كود :
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
}}}
تم الشكر بواسطة:
#4
على غرار قضية 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)
}}}
تم الشكر بواسطة:
#5
هناك خواص خاصة بالزالق الأفقي والرأسي للأداة من نافذة الخصائص الخاصة بها

مثلا لو أردنا أن نظهر الزالق الأفقي



كود :
ListBox1.HorizontalScrollbar = True
=======================================


لو أردنا أن نعرف عدد العناصر داخل الأداة ListBox

عن طريق الخاصية Count التابعة للخاصية Items



كود :
MsgBox(ListBox1.Items.Count)
=====================================

ربما تريد أن تختار عنصر محدد - ذلك أمر يسير


من الخاصية SetSelected للأداة

ترسل رقم العنصر وأيضاً ترسل هل تريد اختياره أم لا

True Or False



كود :
ListBox1.SetSelected(3, True)



}}}
تم الشكر بواسطة:
#6
انظر للصورة جيداً


الخاصية SelectionMode

تجدها فى نافذة الخصائص للأداة


بها أربع اختيارات



MultiExtended

تمكنك من اختيار أكثر من عنصر عن طريق اختيار العنصر مع الضغط على زر Control

MultiSimple

تمكنك من اختيار أكثر م نعنصر دون الضغط على أى زر

None

لا تسمح لك باختيار أى عنصر

One


يكون الاختيار لعنصر أوحد فقط


كود :
ListBox1.SelectionMode = SelectionMode.MultiExtended
ListBox1.SelectionMode = SelectionMode.MultiSimple
ListBox1.SelectionMode = SelectionMode.None
ListBox1.SelectionMode = SelectionMode.One

}}}
تم الشكر بواسطة:
#7
طبعاً تحدثنا عن الخاصية 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
}}}
تم الشكر بواسطة:
#8
الخاصية ClearSelected


تمسح كل الاختيارات


كود :
ListBox1.ClearSelected()

==========================================


الأداة بها عدة عناصر

المستخدم يختار منها

العنصر الثالث له ارتباط معين بحدث معين

تريد ان تتأكد هل تم اختيار العنصر الثالث أم لا


الخاصية GetSelected



كود :
If ListBox1.GetSelected(2) Then
MessageBox.Show("Do")
Else
MessageBox.Show("Un Do")
End If

لا تنسي أن العناصر تأخذ فهرس يبدأ من صفر لذلك رقم الفهرس هنا 2 هو للعنصر 3
}}}
تم الشكر بواسطة:
#9
فى حالة وجود أكثر من اختيار بمعنى أن الخاصية SelectionMode = MultiSimple



كود :
ListBox1.SelectionMode = SelectionMode.MultiSimple
أردنا أن نعرف عدد التحديدات للعناصر



كود :
MessageBox.Show(ListBox1.SelectedItems.Count.ToString)

اى أننا استخدمنا الخاصية Count التابعة للخاصية SelectedItems لنعرف عدد العناصر المحددة


============================================


لو أردنا أن نظهر رقم الفهرس للعنصر المحدد


كود :
MessageBox.Show((ListBox1.SelectedIndex + 1).ToString())

}}}
تم الشكر بواسطة:
#10
الخاصية FindString

يمكن عن طريقها أن أبحث عن عنصر وأجعلها = True


كود :
Dim index As Integer = ListBox1.FindString("A")
ListBox1.SelectedIndex(index)

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


ثم قمنا باستخدام الخاصية SelectedIndex كما شرحناها من قبل


}}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم