![]() |
|
[VB.NET] تنفيذ حدث SelectedIndexChanged لأداة ListBox المرتبط برمجيا بDataTable عند فتح الفورم - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183) +--- الموضوع : [VB.NET] تنفيذ حدث SelectedIndexChanged لأداة ListBox المرتبط برمجيا بDataTable عند فتح الفورم (/showthread.php?tid=31025) |
تنفيذ حدث SelectedIndexChanged لأداة ListBox المرتبط برمجيا بDataTable عند فتح الفورم - سميـر - 22-08-19 السلام عليكم لدي فورم قد أنشأت في بدايته متغير dt من نوع DataTable وفي حدث الفورم أقوم بإنشاء الأعمدة للمتغير dt ثم إضافة صفوف له وبعدها اقوم بربط dt بالأداة ListBox المشكلة أن الحدث SelectedIndexChanged الخاص بالأداة ListBox يتم اطلاقه أكثر من مره سواء في البرنامج الأساسي أو مشروع التجربة وللتأكد قبل وضع السؤال فقد وضعت متغير لتعداد مرات تنفيذ الحدث واظهاره في Label وبالفعل تاكدت تلك المشكلة فكيف التغلب على عدم تنفيذ الحدث الا عندما يقوم المستخدم بالاختيار من أداة ListBox وهذه اكواد مشروع التجربة وأساسها مقتبس من اكواد مواضيع المنتدى ويلاحظ أنه تم تنفيذ الحدث 4 مرات عند ظهور الفورم كود : Public Class Form1نفس المشكلةتحدث مع أداة ComboBox ولكن تم التغلب عليها باستخدام الحدث SelectionChangeCommitted بدلا من حدث SelectedIndexChanged ولكن الأداة ListBox ليس لها حدث SelectionChangeCommitted شكرا لكم RE: تنفيذ حدث SelectedIndexChanged المرتبط برمجيا بـDataTable عند فتح الفورم - سعود - 22-08-19 PHP كود : Dim dt As New DataTableRE: تنفيذ حدث SelectedIndexChanged لأداة ListBox المرتبط برمجيا بDataTable عند فتح الفورم - سميـر - 22-08-19 اشكرك أخي سعود على سرعة الاجابة في البرنامج الاساسي هناك اجراءات يتم تنفيذها من داخل الحدث SelectedIndexChanged عند الاختيار والتي لا تنبغي لها أن تحدث إلا عند اختيار المستخدم بنفسه لأحد الصفوف أشكرك أستاذي أداة Label ما هي الا لإظهار عدد مرات تنفيذ الحدث في مرحلة تتبع المشكلة أشكرك أخي الكريم RE: تنفيذ حدث SelectedIndexChanged لأداة ListBox المرتبط برمجيا بDataTable عند فتح الفورم - سعود - 22-08-19 اذا كنت تريد حصر الاجراء بتدخل المستخدم للبرنامج فاستخدم حدث Control_MouseClick وتحقق من ان الزر الايسر هو الذي تم النقر عليه. توجد بعض الظروف تجعل المبرمج يستخدم ListBox بدلا عن ComboBox RE: تنفيذ حدث SelectedIndexChanged لأداة ListBox المرتبط برمجيا بDataTable عند فتح الفورم - ابراهيم ايبو - 22-08-19 السلام عليكم اخي سمير
الكود سليم ولاتوجد اي مشكلة فيه يحمل مرة واحدة والعدد في اللايبل هو 4
وعند النقر على اي عنصر في الليست بوكس يتم زيادة العدد ب1 كل مرة
اين المشكلة؟
RE: تنفيذ حدث SelectedIndexChanged لأداة ListBox المرتبط برمجيا بDataTable عند فتح الفورم - سميـر - 22-08-19 أشكرك أستاذي الكريم سعود الحدث MouseClick جيد، ولكن من الشروط أن يتاح للمستخدم حرية العمل سواء الماوس أو التنقل بواسطة لوحة المفاتيح. أثابكم الله أشكرك أستاذي ابراهيم ايبو واعانكم العدد 3 الذي ظهر لديك هو عدد مرات تنفيذ الحدث بدون تدخل المستخدم، وهو الذي كشف المشكلة، يفترض بالعداد ان يكون صفرا للتأكد من أنه لم يتم تنفيذ الحدث بدون اختيار المستخدم. وقد تم وضع هذا العداد كما اسلفت فقط من أجل تتبع المشكلة والتي اتضحت من خلال تنفيذ الحدث عند بداية الفورم. والمفروض الحدث لا يتم اطلاقه الا عند اختيار المستخدم فقط، سواء بالماوس أو بلوحة المفاتيح. أشكركم أساتذتي RE: تنفيذ حدث SelectedIndexChanged لأداة ListBox المرتبط برمجيا بDataTable عند فتح الفورم - ابراهيم ايبو - 23-08-19 الامر حدا عادي لان عند اضافة هذين السطرين dt.Rows.Add(1, "Sameer") dt.Rows.Add(2, "Waleed") يتم التغيير وهذا يحسب 1 ثم عند اضافة هذا السطر ListBox1.ValueMember = "id" يحسب تغيير ثاني ويكون العد اصيح 2 وعند اضافة هذا السطر ListBox1.DisplayMember = "name" يحسب تغيير ثالث ويكون العد اصبح 3 فم بايقاف هذا السطر ListBox1.ValueMember = "id" سيكون التغيير اصبح اثنان فقط عملية ListBox1_SelectedIndexChanged تحسب كل التغييرات التي طرأت على الليست بوكس جرب اضافة هذه الاسطر ListBox1.SelectedIndex = 0 ListBox1.SelectedIndex = 1 ListBox1.SelectedIndex = 0 ListBox1.SelectedIndex = 1 ListBox1.SelectedIndex = 0 ListBox1.SelectedIndex = 1 ثم انظر الى عدد مرات التغيير التي حصلت على الليست بوكس عندها ستدرك ان الامر طبيعي وان كل عملية تغيير في الليست بوكس تحسب RE: تنفيذ حدث SelectedIndexChanged لأداة ListBox المرتبط برمجيا بDataTable عند فتح الفورم - سميـر - 23-08-19 أشكرك أستاذي ابراهيم ايبو فعلا اضافة الأسطر أدت لإطلاق الحدث، بارك الله فيكم تم تعديل الكود ونجح الأمر فقد تم نقل أسطر ربط أداة ListBox قبل أسطر الإضافة فبقي سطر إلغاء الإختيار بوضع -1 للخاصية SelectedIndex فهي تطلق الحدث أيضا فتم التغلب عليه بوضع شرط داخل الحدث ليتفقد قيمة SelectedIndex فإن كانت -1 يخرج من الحدث الكود الأول بعد التعديل كود : Public Class Form1أشكرك أستاذي ابراهيم ايبو على مساعدتك أشكرك أستاذي سعود على تفاعلك مع الموضوع RE: تنفيذ حدث SelectedIndexChanged لأداة ListBox المرتبط برمجيا بDataTable عند فتح الفورم - ابراهيم ايبو - 23-08-19 الحمد لله والشكر لله
ولك اخي سمير
كم هو رائع فهم سير الكود لانك عندها ستعرف ماتريد
|