تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
get label texts of all checked checkbox in user control inside flowlayoutpanel
#1
السلام عليكم
أنا أعمل على نظام Restaurant POS ، لقد أنشأت نموذجًا لإظهار جميع الإضافات التي يمكن للمستخدمين طلب إضافتها إلى الطلبات ، وهنا النموذج:

داخل هذا النموذج ، أضفت flowlayoutpanel ويوجد داخلها عدة usercontrols  ، كل usercontrol  به PictureBox و Label و CheckBox. أقوم بأضافة الـ usercontrol في flowlayoutpanel  بهذة الطريقة:

PHP كود :
flowLayoutPanel2.Controls.Clear();
 
           DB_conn.Query2("get_food_extras");
 
           DB_conn._dr DB_conn._cmd.ExecuteReader();
 
           while (DB_conn._dr.Read())
 
           {
 
               Extra_uc UC = new Extra_uc
                
{
 
                   Extras_ID DB_conn._dr["ID"].ToString(),
 
                   Extras_Price Convert.ToDecimal(DB_conn._dr["price"].ToString()),
 
                   Extras_name DB_conn._dr["name"].ToString()
 
               };
 
               if (DB_conn._dr["image"] != DBNull.Value)
 
               {
 
                   byte[] image = (byte[])DB_conn._dr["image"];
 
                   image Decompress(image);
 
                   var stream = new MemoryStream();
 
                   stream.Write(image0image.Length);
 
                   var bitmap = new Bitmap(stream);
 
                   UC.Extras_image bitmap;
 
               }
 
               UC.CheckBox1.CheckedChanged += UC_PictureBox1_Click;
 
               UC.MaterialImage.Click += UC_PictureBox1_Click;
 
               UC.Material_name_txt.Click += UC_PictureBox1_Click;
 
               UC.MaterialImage.MouseDown += UC_PictureBox1_MouseDown;
 
               UC.Material_name_txt.MouseDown += UC_PictureBox1_MouseDown;
 
               UC.MaterialImage.MouseMove += UC_PictureBox1_MouseMove;
 
               UC.Material_name_txt.MouseMove += UC_PictureBox1_MouseMove;
 
               flowLayoutPanel2.Controls.Add(UC);
 
           }

 
           DB_conn._dr.Close(); 
بهذة الطريقة استطيع جلب النص لـ label الذي تم الضغط علية :
PHP كود :
private void UC_PictureBox1_Click(object senderEventArgs e)
 
   {
 
       if (!Food_Moved)
 
       {
 
           string Extra_Name "";
 
           CheckState checkd CheckState.Unchecked;
 
           if (sender is Label lab)
 
           {
 
               Extra_Name lab.Tag.ToString();
 
           }
 
           else if (sender is PictureBox btn1)
 
           {
 
               Extra_Name btn1.Tag.ToString();
 
           }
 
           else if (sender is Guna.UI2.WinForms.Guna2CheckBox ck)
 
           {
 
               checkd ck.CheckState;
 
           }

 
           MessageBox.Show(Extra_Name.ToString());

 
       }
 
       else
        
{
 
           Food_Moved false;
 
       }
 
   
ما اريدة هنا هو كيف استطيع جلب جميع النصوص ل جميع ال labels الذي تم عمل check لل checkbox في تلك ال usercontrols.
للتوضيح : لناخذ الصورة المرفقة في الأعلى :
عند الضغط على موافق (إضافة الصنف - يجب تغير النص) يجب ان احصل على الاتي : Extra 1 - Extra 7

امل اني وضحت ما اريد.
الرد
تم الشكر بواسطة:
#2
بسم الله الرحمن الرحيم .
اعمل يوزر كنترول صممها و ضع بها ما تريد من ادوات ثم اضف خاصيتان جديدتان للاداة الجديدة الخاصية الاولى تشيكد الخاصة بالتشك بوكس الخاصية الثانية تيكست الخاصة بالليبل .
الان اصبت الامور اسهل عن طريق لووب في الفلو بانل تستطيع وضع شرط على الخاصية الجديدة تشيكد الخاصة بالاداة الخاصة بك و الله الموفق .
سبحان الله وبحمده سبحان الله العظيم و الحمد لله ولا اله الا الله والله اكبر




الرد
تم الشكر بواسطة: Rabeea Qbaha
#3
شكرا لك اخي عصام فعلا حل منطقي.

لكن قمت بحل الموضوع بالطريقة الاتية :

PHP كود :
private IEnumerable<stringGetCheckedNames() =>
 
   flowLayoutPanel2.Controls.OfType<Extra_uc>()
 
   .Where(uc => uc.CheckBox1.Checked)
 
   .Select(uc => uc.Extras_name); 
الرد
تم الشكر بواسطة: asemshahen5 , Anas Mahmoud
#4
ايضا طريقة جيدة لكن موضوع الاداة و الخاصية مفيد للمستقبل اي نفس الكود لاكن بدون اسم اداة التشك بوكس اي
Uc.checked من وجهة نظري اجمل و اسرع و تصبح مكتبة ديناميكية لتستخدمها في اي مشروع مستقبلي دون عناء .
موفق انشاء الله .
سبحان الله وبحمده سبحان الله العظيم و الحمد لله ولا اله الا الله والله اكبر




الرد
تم الشكر بواسطة: Rabeea Qbaha


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  عندي سؤال علي flowlayoutpanel عبدالكريم رشدان 7 1,027 18-08-20, 11:10 PM
آخر رد: ربيع الهمداني
  مشكلة إضافه CheckBox فى الداتا جريد فيو maxruined 3 685 15-11-19, 08:31 PM
آخر رد: maxruined
  [C#.NET] مناداه method موجودة في ال user control من ال main form Rabeea Qbaha 13 1,997 19-03-19, 04:48 AM
آخر رد: Rabeea Qbaha
  [C#.NET] كيف ربط devexpress grid control مع قواعد بيانات access شريف الخولي 0 626 14-03-19, 06:10 PM
آخر رد: شريف الخولي
  هل يمكن حفظ قيمة checkbox؟ abozeyd 2 997 26-08-17, 11:20 PM
آخر رد: abozeyd
  [سؤال] اريد كود وضع علامة صح على جميع checkBox الموجودة في الفورم دفعة واحد Ahmed Gandos 9 3,032 15-09-16, 03:01 PM
آخر رد: الشريف الوداني
  اضافة Control فى List View بالكود نور الدين وليد 2 1,385 06-09-16, 12:59 PM
آخر رد: ahmedabdelaliem
  سؤال بخصوص ازاى اكتب نص فى text box .. واخليه يسمع فى label amir edward 2 1,553 30-03-16, 10:25 PM
آخر رد: ahmedabdelaliem
  [كود] تعديل Control.WndProc Method أسامة 6 1,929 11-09-14, 11:31 PM
آخر رد: vbnet
Question [C#.NET] تقرير عن نشاط user داخل منظومة (برنامج) fathi84 4 1,899 18-08-14, 07:50 PM
آخر رد: smss

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


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