21-05-20, 12:59 PM
(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 اما ماذا
الملف بعد تعديل الكود فى المرفقات اتمنى المتابعه من الاخوة الاعضاء وشكرا جزيلا
