تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] اريد عند البحث فى الكمبوبوكس من اي مكان فى الكلمات يجلب لى المتشابهات
#1
Lightbulb 
السلام عليكم 

عندى كمبوبوكس وبه اسماء منتجات او اسماء دول كما بالصورة



واريد عند كتابة اى كلمة فى اسم المنتج فى الاول او الوسط ياتى باسم المنتج



هو عندى بياتى بالمنتج لو كتبت اول الكلمة فقط

يتم البحث فقط بالكلمة الاولى 

علما انى مفعل الخصيتين

SuggestAppend 
ListItems




مثلا فى المثال اللى فى الصورة
  • لو كتبت كلمة ( جمهورية ) ياتى بالكلمات التى تبدأ ( جمهورية  )
  • اما لو كتبت كلمة الكنغو لا ياتى بالدول التى بها كلمة الكنغو



اتمنى الاستفسار يكون واضع
الملف فى المرفقات اللى يقدر يعدل عليه 
وشكرا جزيلا لكم


الملفات المرفقة
.rar   CompoBox.rar (الحجم : 163.18 ك ب / التحميلات : 6)
الرد
تم الشكر بواسطة: معاند الحظ , معاند الحظ , asemshahen5
#2
وعليك السلام ورحمة الله وبركاته




Big Grin  هههههههه اضحك الله سرك يابن الحلال 

ابشر اخي ان شاء الله اقدر اساعدك
جاري تحميل المشروع
الرد
تم الشكر بواسطة: asemshahen5
#3
(20-05-20, 06:43 PM)معاند الحظ كتب : وعليك السلام ورحمة الله وبركاته




Big Grin  هههههههه اضحك الله سرك يابن الحلال 

ابشر اخي ان شاء الله اقدر اساعدك
جاري تحميل المشروع

شكرا لك جزيلا 
وفى انتظار الحل
الرد
تم الشكر بواسطة: asemshahen5
#4
الاخ حامد

بصراحة اشكل علي فهم قصدك هنا 

"مثلا فى المثال اللى فى الصورة
  • لو كتبت كلمة ( جمهورية ) ياتى بالكلمات التى تبدأ ( جمهورية  )

  • اما لو كتبت كلمة الكنغو لا ياتى بالدول التى بها كلمة الكنغو"
 هل دائما كلمة جمهورية لها هذا الشرط وهل توجد كلمات اخرى ينطبق عليها نفس شرط كلمة جمهورية؟
وبالنسبة لكلمة الكونغو انت اوضحت ان الشرط هو عدم اضهار نتائج البحث التي تحتوي على كلمة كونغو فهل توجد كلمات اخرى ينطبق عليها نفس الشرط؟


عموما انا حاولت على قدر المستطاع اقارب الحل واتمنى يكون صحيح

كود :
   private List<string> itemHolder = new List<string>();
    private List<string> ItemList = new List<string>();

    private void Button1_Click_1(object sender, EventArgs e)
    {
        foreach (string itm in ComboBox1.Items)
            itemHolder.Add(itm);
        foreach (string item in ComboBox1.Items)
        {
            if (item.Contains(ComboBox1.Text))
            {
                ItemList.Add(item);
            }
        }

        ComboBox1.Items.Clear();
        ComboBox1.Items.AddRange(ItemList.ToArray());
    }

    private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        ComboBox1.Items.Clear();
        ComboBox1.Items.AddRange(itemHolder.ToArray());
    }


لاحظ ان الكود يبحث عن الكلمة المطلوبة عند الضغط على الزر

ويقوم بحفظ عناصر الكومبوبوكس في متغير من نوع String  اسمه itemHolder مهمته هي حفظ عناصر الكومبوبوكس الاصلية 
من اجل استعادتها لاحقا  ثم يقوم  الكود بعمل لوب على كل عناصر الكومبوبوكس ويقارن بينها وبين كلمة البحث 
فان وجد تطابق يضيف الكود عنصر الكومبوبوكس المطابق الى متغير اخر من نوع String  اسمه  ItemList وبعد انتهاء اللوب 
يتم حذف عناصر الكومبوبوكس الاصلية كلها ويتم ملىء الكومبوبوكس بالعناصر التي طابقت البحث والمخزنه في ItemList 
ليتم عرضها عند اسدال عناصر الكومبوبوكس
واخير يتم استعادة العناصر الاصلية عندما يتغير العنصر المختار SelectedIndex من المتغير itemHolder 

اعلم ان الكود ليس هو ماتريد لكن قم بالتعديل عليه لتصل الى مطلوبك
الرد
تم الشكر بواسطة: asemshahen5
#5
(20-05-20, 10:41 PM)معاند الحظ كتب : الاخ حامد

بصراحة اشكل علي فهم قصدك هنا 

"مثلا فى المثال اللى فى الصورة
  • لو كتبت كلمة ( جمهورية ) ياتى بالكلمات التى تبدأ ( جمهورية  )

  • اما لو كتبت كلمة الكنغو لا ياتى بالدول التى بها كلمة الكنغو"
 هل دائما كلمة جمهورية لها هذا الشرط وهل توجد كلمات اخرى ينطبق عليها نفس شرط كلمة جمهورية؟
وبالنسبة لكلمة الكونغو انت اوضحت ان الشرط هو عدم اضهار نتائج البحث التي تحتوي على كلمة كونغو فهل توجد كلمات اخرى ينطبق عليها نفس الشرط؟


عموما انا حاولت على قدر المستطاع اقارب الحل واتمنى يكون صحيح

كود :
   private List<string> itemHolder = new List<string>();
    private List<string> ItemList = new List<string>();

    private void Button1_Click_1(object sender, EventArgs e)
    {
        foreach (string itm in ComboBox1.Items)
            itemHolder.Add(itm);
        foreach (string item in ComboBox1.Items)
        {
            if (item.Contains(ComboBox1.Text))
            {
                ItemList.Add(item);
            }
        }

        ComboBox1.Items.Clear();
        ComboBox1.Items.AddRange(ItemList.ToArray());
    }

    private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        ComboBox1.Items.Clear();
        ComboBox1.Items.AddRange(itemHolder.ToArray());
    }


لاحظ ان الكود يبحث عن الكلمة المطلوبة عند الضغط على الزر

ويقوم بحفظ عناصر الكومبوبوكس في متغير من نوع String  اسمه itemHolder مهمته هي حفظ عناصر الكومبوبوكس الاصلية 
من اجل استعادتها لاحقا  ثم يقوم  الكود بعمل لوب على كل عناصر الكومبوبوكس ويقارن بينها وبين كلمة البحث 
فان وجد تطابق يضيف الكود عنصر الكومبوبوكس المطابق الى متغير اخر من نوع String  اسمه  ItemList وبعد انتهاء اللوب 
يتم حذف عناصر الكومبوبوكس الاصلية كلها ويتم ملىء الكومبوبوكس بالعناصر التي طابقت البحث والمخزنه في ItemList 
ليتم عرضها عند اسدال عناصر الكومبوبوكس
واخير يتم استعادة العناصر الاصلية عندما يتغير العنصر المختار SelectedIndex من المتغير itemHolder 

اعلم ان الكود ليس هو ماتريد لكن قم بالتعديل عليه لتصل الى مطلوبك


شكرا لك على الاهتمام




لقد قمت بعمل بعض التعديلات على الكود 
قمت باضافة الكود ده Form1_Load على اساس بيانات الكمبوبوكس تخست فى itemHolder

وافرغ الكمبوبوكس للكتابة فيه


كود :
private void Form1_Load(object sender, EventArgs e)
       {
           foreach (string itm in comboBox1.Items)
               itemHolder.Add(itm);

           comboBox1.Items.Clear();
       }

ثم بعد ذلك وضعت الكود ده فى حدث comboBox1_TextChanged بحيث يبحث فى itemHolder عن ما بداخل comboBox1


كود :
private void comboBox1_TextChanged(object sender, EventArgs e)
       {

           foreach (string item in itemHolder)
           {
               if (item.Contains(comboBox1.Text))
               {
                   ItemList.Add(item);
               }
           }


           comboBox1.Items.AddRange(ItemList.ToArray());
       }


ولكن النتيجة طلعت نفس النتيجة الاولى معى 
اعتقد ان النتيجة قربت ولكن لا اعلم لماذا لا يجلب البيانات عندما اكتب الكلمة الثانية او الاخيرة
مش عارف اهى فى Contains اما ماذا 


الملف بعد تعديل الكود فى المرفقات اتمنى المتابعه من الاخوة الاعضاء وشكرا جزيلا


الملفات المرفقة
.rar   CompoBox.rar (الحجم : 179.31 ك ب / التحميلات : 4)
الرد
تم الشكر بواسطة: asemshahen5
#6
اتمنى المتابعه من الاعضاء لأهمية الموضوع وشكرا جزيلا
الرد
تم الشكر بواسطة: asemshahen5



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


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