الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تعديل كود للبحث في الليست فيو

بدأه booknet في 18 نوفمبر 2009 · 5 رد · 782 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

السلام عليكــم ورحمـة الله وبركاتــه ،،

في المثال المرفق كود للبحث في الليست فيو، والبحث يسير بشكل جيد ولكن ينقصه شيئان:

1- ظهور مسج عند الإنتهاء من البحث.

2- ظهور مسج عند عدم وجود الكلمة في الليست فيو.

وشكرا

find_string_in_listView.rar

#2

مربع ListView له الدالة FindItemWithText التي تبحث لك بين عناصر ListView عن نص و ترجع لك كائن من نوع ListViewItem للسطر الذي وجد فيه النص المبحوث عنه. إذا أرجعت Nothing فهذا إعلام بنهاية البحث. استعمل هذا الكود :

		' تنشيط مربع اللائحة
		ListView1.Select()
		' البحث عن النص
		Dim lvi As ListViewItem = ListView1.FindItemWithText(Text1.Text.Trim(), False, Command3.Tag)
		' التحقق من وجود النص
		If Not lvi Is Nothing Then
			' تنشيط السطر الذي وجد فيه النص
			lvi.Selected = True
			' تحديد رقم السطر الذي سنكمل منه عملية البحث
			Command3.Tag = lvi.Index + 1
		Else ' لا وجود للنص أو نهاية عملية البحث
			' رقم السطر الأول الذي سنبدأ منه البحث من جديد
			Command3.Tag = 0
			' إعلام المستخدم بنهاية البحث
			MsgBox("نهاية البحث.")
		End If

الخاصية Tag للزر Command3 يجب أن تهيئ على القيمة 0 كي تبدأ عملية البحث من السطر الأول.

#3

شكراً لك اخي الكريم

ولكن هل يمكن تطبيق هذا الكود على المثال المرفق

وشكرا

#4

قم بنسخ الكود المرفق في ردي السابق في الحدث Click للزر Command3 مكان الكود القديم. ثم حدد الخاصية Tag على القيمة 0 في الحدث TextChanged لـ Text1 و سيعمل إن شاء الله.

#5

شكراً لك اخي الكريم

ولكن الكود الذي كتبته أنت لا يبحث عن جزء من الكلمة إذا كان الحرف ليس الأول فمثلا كلمة "عمر" لو بتحث عن الميم لا يبحث.

وشكرا

#6

فإذن الحل يكمن في تغيير جملة النداء على FindItemWithText إلى لوب تستعرض السطور و تبحث عن النص داخل نص السطر :

		' تنشيط مربع اللائحة
		ListView1.Select()
		' النتيجة
		Dim lvi As ListViewItem = Nothing
		' استعراض الأسطر المتبقية منذ آخر عملية بحث
		If Command3.Tag < ListView1.Items.Count - 1 Then
			For i As Integer = Command3.Tag To ListView1.Items.Count - 1
				' بحث داخل النص
				If ListView1.Items(i).Text.Contains(Text1.Text) Then
					' تحديد العنصر الذ تم إيجاد النص فيه
					lvi = ListView1.Items(i)
					' إنهاء عملية البحث
					Exit For
				End If
			Next
		End If
		' التحقق من وجود النص
		If Not lvi Is Nothing Then
			' تنشيط السطر الذي وجد فيه النص
			lvi.Selected = True
			' تحديد رقم السطر الذي سنكمل منه عملية البحث
			Command3.Tag = lvi.Index + 1
		Else ' لا وجود للنص أو نهاية عملية البحث
			' رقم السطر الأول الذي سنبدأ منه البحث من جديد
			Command3.Tag = 0
			' إعلام المستخدم بنهاية البحث
			MsgBox("نهاية البحث.")
		End If

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…