القائمة الرئيسية

الصفحات







ListBox | شرح اداة ListBox


ListBox | شرح اداة ListBox






ListBox هو ItemsControl ،
مما يعني أنه يمكن أن يحتوي على مجموعة من الكائنات من أي نوع (مثل السلسلة أو الصورة أو panel)

يمكن رؤية أكثر من عنصر واحد في ListBox ، على عكس ComboBox ، الذي يحتوي على العنصر المحدد فقط المرئي
تحدد الخاصية SelectionMode إمكانية تحديد أكثر من عنصر واحد في ListBox في المرة الواحدة.

تحدد الخاصية SelectionMode عدد العناصر التي يمكن للمستخدم تحديدها في وقت واحد. يمكنك تعيين الخاصية إلى one (الافتراضي) أو متعدد (MultiSimple) أو ممتد.( MultiExtended)

إنشاء ListBox

هناك طريقتان لإنشاء اداة تحكم ListBox في نماذج Windows. إما أنه يمكننا استخدام مصمم النماذج لإنشاء اداة تحكم في وقت التصميم أو يمكننا استخدام فئة ListBox لإنشاء اداة تحكم في وقت التشغيل.

إنشاء ListBox في وقت التصميم
 
في شرحنا الأول ، سنقوم بإنشاء اداة تحكم ListBox في وقت التصميم باستخدام مصمم النماذج.
 
لإنشاء اداة تحكم ListBox في وقت التصميم ، نقوم ببساطة بسحب اداة تحكم ListBox من Toolbox وإسقاطه إلى نموذج في Visual Studio. بعد سحب ListBox وإسقاطه في نموذج ، يبدو ListBox كما في الشكل 1. بمجرد وجود ListBox في النموذج ، يمكنك تحريكه وتغيير حجمه باستخدام الماوس وتعيين خصائصه وأحداثه 





الطريقة الثانية لانشاء أداة االتحكم ListBox  (برمجياً)

نقوم بإنشاء اوبجكت من الفئة ListBox  وتعيين خصائص الأداة ومن ثم نضيف الأداة للفورم
ListBox listBox1 = new ListBox();
في الخطوة التالية ، يمكنك تعيين خصائص اداة تحكم ListBox. يقوم مقتطف الكود التالي بتعيين خصائص الموقع والعرض والارتفاع ولون الخلفية ولون المقدمة والنص والاسم والخط في ListBox:
listBox1.Location = new System.Drawing.Point(12, 12);
            listBox1.Name = "ListBox1";
            listBox1.Size = new System.Drawing.Size(245, 200);
            listBox1.BackColor = System.Drawing.Color.Orange;
            listBox1.ForeColor = System.Drawing.Color.Black;

بمجرد أن يصبح اداة التحكم ListBox جاهزًا بخصائصه ، فإن الخطوة التالية هي إضافة ListBox إلى الفورم. للقيام بذلك ، نستخدم الأسلوب this.Controls.Add الذي يضيف اداة تحكم ListBox إلى عناصر تحكم الفورم ويعرضه في الفورم بناءً على موقع اداة التحكم وحجمه. يضيف مقتطف التعليمة البرمجية التالية اداة تحكم ListBox إلى الفورم الحالي:

this.Controls.Add(listBox1);

 خصائص ListBox

أسهل طريقة لتعيين الخصائص هي من نافذة الخصائص. يمكنك فتح نافذة الخصائص بالضغط على F4 أو بالنقر بزر الماوس الأيمن على عنصر تحكم واختيار عنصر القائمة "خصائص". تبدو نافذة الخصائص كما في الشكل 2 







·        خاصية Name
تمثل الخاصية Name اسمًا فريدًا لعنصر تحكم ListBox. يتم استخدامه للوصول إلى عنصر التحكم في التعليمات البرمجية. يقوم مقتطف الرمز التالي بتعيين اسم عنصر التحكم ListBox ونصه
listBox1.Name = "ListBox1";




·         خصائص الموقع والحجم Location and Size
تأخذ خاصية الموقع نقطة تحدد موضع بدء ListBox في الفورم. يمكنك أيضًا استخدام الخاصيتين Left و Top لتحديد موقع عنصر التحكم من الزاوية العلوية اليسرى من الفورم. تحدد الخاصية Size حجم عنصر التحكم. يمكننا أيضًا استخدام خصائص العرض والارتفاع بدلاً من خاصية الحجم. يقوم مقتطف الكود التالي بتعيين خصائص الموقع والعرض والارتفاع لاداة تحكم ListBox:

listBox1.Location = new System.Drawing.Point(12, 12);
listBox1.Size = new System.Drawing.Size(245, 200);


·         الخاصية Font
تمثل الخاصية Font خط نص اداة تحكم ListBox. إذا قمت بالنقر فوق خاصية الخط في نافذة الخصائص ، فسترى اسم الخط وحجمه وخيارات الخط الأخرى. يقوم مقتطف الكود التالي بتعيين خاصية الخط في وقت التشغيل:

            listBox1.Font = new Font("Georgia", 16);


·        الخاصية Items
يتم استخدام خاصية العناصر لإضافة العناصر والعمل بها في ListBox. يمكننا إضافة عناصر إلى ListBox في وقت التصميم من نافذة الخصائص بالنقر على مجموعة العناصر كما ترى في الشكل 







عندما تنقر على Collection ، ستظهر لك نافذة محرر مجموعة السلسلة حيث يمكنك كتابة السلاسل النصية
سيصبح كل سطر تمت إضافته إلى هذه المجموعة عنصر ListBox.  أضفت أربعة عناصر كما ترى من الشكل 





بعد ان تقوم بإضافة العناصر سوف تبدو أداة ListBox  في الفورم بهذا الشكل




يمكنك إضافة بعض العناصر للListBox  في وقت التشغيل

مثال الكود التالي

listBox1.Items.Add("C#");
            listBox1.Items.Add("C++");
            listBox1.Items.Add("JAVA");
            listBox1.Items.Add("PYTHON");


 إحضار كافة عناصر ListBox
 
للحصول على جميع العناصر ، نستخدم خاصية العناصر وننتقل خلالها لقراءة جميع العناصر. يتكرر مقتطف الكود التالي عبر جميع العناصر ويضيف محتويات العنصر إلى StringBuilder ويعرضها في MessageBox:

private void button1_Click(object sender, EventArgs e)
        {         
  StringBuilder str = new StringBuilder();
            foreach (var item in listBox1.Items)
            {
                str.Append(item.ToString());
                str.Append(" ");}
                   MessageBox.Show(str.ToString());}

يمكنك الحصول على قيمة عنصر من عناصر listbox
واسنادها لمتغير اخر

مثال :
private void button1_Click(object sender, EventArgs e)
        {
            listBox1.SelectedIndex = 2;
            string str = listBox1.Items[listBox1.SelectedIndex].ToString();

            MessageBox.Show(str);
        }

استخدمنا في السطر الأول داخل الدالة الخاصية SelectedIndex
لتحديد عنصر من عناصر listbox  سوف يتم تحديد العنصر 3
وبعد ذلك يتم اسناد العنصر المحدد للمتغير str  ومن ثم يقوم بطباعته

يمكنك حذف السطر الأول وتحديد عنصر في السطر الثاني
كالتالي :

string str = listBox1.Items[listBox1.SelectedIndex=2].ToString();



·       الخاصية SelectionMode
تحدد الخاصية SelectionMode كيفية تحديد العناصر في ListBox. يمكن أن تكون قيمة SelectionMode واحدة من قيم تعداد SelectionMode الأربع التالية:

    
لا شيء: لا يمكن تحديد عنصر.
    
واحد: يمكن تحديد عنصر واحد فقط.
     MultiSimple:
يمكن تحديد عناصر متعددة.
     MultiExtended:
يمكن تحديد عناصر متعددة ، ويمكن للمستخدم استخدام مفاتيح SHIFT و CTRL والسهم لإجراء التحديدات
لتحديد عنصر في ListBox ، يمكننا استخدام الدالة SetSelect التي تأخذ فهرس عنصر وقيمة صواب أو خطأ حيث تمثل القيمة الحقيقية العنصر الذي سيتم تحديده.

يقوم مقتطف الكود التالي بتعيين ListBox للسماح بتحديد متعدد وتحديد العنصرين الثاني والثالث في القائمة:

listBox1.SelectionMode = SelectionMode.MultiSimple;
            listBox1.SetSelected(1, true);
            listBox1.SetSelected(2, true);

يمكننا مسح جميع العناصر المحددة عن طريق استدعاء طريقة ClearSelected ، كما في الكود التالي:

            listBox1.ClearSelected();
ويمكن حذف جميع عناصر listBox  كما في الكود التالي
listBox1.Items.Clear();

 كيفية تعطيل تحديد العنصر في ListBox؟

فقط قم بتعيين الخاصية SelectionMode إلى none


 فرز عناصر ListBox

إذا تم تعيين الخاصية Sorted إلى true ، فسيتم فرز عناصر ListBox. يقوم مقتطف الكود التالي بفرز عناصر ListBox:
            listBox1.Sorted = true;


 البحث عن عناصر في ListBox

يتم استخدام الدال FindString للعثور على سلسلة أو سلسلة فرعية في ListBox. يعثر مقتطف الكود التالي على سلسلة في ListBox ويحددها إذا تم العثور عليها:

private void button1_Click(object sender, EventArgs e)
        {
            listBox1.ClearSelected();

            int index = listBox1.FindString(textBox1.Text);

            if (index < 0)
            {
                MessageBox.Show("Item not found.");

            }
            else
            {
                listBox1.SelectedIndex = index;
            }
        }


ListBox SelectedIndexChanged Event Hander

يتم تشغيل الحدث SelectedIndexChanged عند تغيير تحديد العنصر في ListBox. يمكنك إضافة معالج الأحداث باستخدام نافذة الاحداث واختيار رمز الحدث والنقر المزدوج على SelectedIndexChanged


يحدد مقتطف الكود التالي هذه الأحداث وينفذها ومعالجات الأحداث الخاصة بها. يمكنك استخدام هذا الرمز نفسه لتنفيذ حدث في وقت التشغيل.
listBox1.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged);

 private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            MessageBox.Show(listBox1.SelectedItem.ToString());
    
 
 }


  الخاصية DataSource

يتم استخدام الخاصية DataSource لربط مجموعة من العناصر ListBox.
 
مقتطف الكود التالي هو مثال بسيط لربط البيانات حيث يرتبط Array String بقائمة ListBox


listBox1.Items.Clear();
            string[] str = new string[]
            {
                "C","Ruby","PHP","Java Script"
            };
            listBox1.DataSource = str;

هل اعجبك الموضوع :

تعليقات

تعليق واحد
إرسال تعليق
  1. مشكورين على مجهودكم
    شرح رائع ومبسط وأتمنى اضافة المزيد من الدروس

    ردحذف

إرسال تعليق