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

نسخة كاملة : إجبار المستخدم على اختيار واحدة من عدة قيم محددة سابقا في صندوق النصوص
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
كاتب الموضوع : samerselo



تقوم الفكرة على استخدام الحدث Validating للتأكد من أن المستخدم قد اختار ما يطابق قائمة القيم المقترحة.

للتجربة قم بإنشاء مشروع جديد ثم أضف إليه صندوقي نصوص

في الحدث Load للنموذج ضع الكود التالي


كود :
' تعريف مصفوفة ستحمل خياراتنا للإكمال التلقائي
Dim Lis As New List(Of String)
Lis.Add("Visual Basic")
Lis.Add("Visual C#")
Lis.Add("Visual C++")
Lis.Add("Pascal")
Lis.Add("Delphi")
Lis.Add("C++")
Lis.Add("2100")
Lis.Add("3200")
Lis.Add("Nokia 6600")
Lis.Add("Nokia 3250")
Lis.Add("Nokia 7610")

' تحديد طريقة الإكمال التلقائي
Me.TextBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend
' تحديد مصدر الإكمال التلقائي
Me.TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource

' إضافة القائمة الخاصة بنا كمصدر للإكمال التلقائي
Me.TextBox1.AutoCompleteCustomSource.Clear()
Me.TextBox1.AutoCompleteCustomSource.AddRange(Lis.ToArray)
في الحدث Validating لصندوق النصوص TextBox1 ضع الكود التالي


كود :
If Me.TextBox1.AutoCompleteCustomSource.Count = 0 Then
' إذا كانت قائمة الإكمال التلقائي فارغة
Me.TextBox1.Text = String.Empty
Exit Sub
Else
' تحديد إذا كان النص موجود ضمن قائمة الإكمال التلقائي
For Each Str As String In Me.TextBox1.AutoCompleteCustomSource
If Str.ToUpper = Me.TextBox1.Text.ToUpper Then
Me.TextBox1.Text = Str
Exit Sub
End If
Next
End If
' إذا وصلنا إلى هنا فهذا يعني أن النص المدخل غير موجود
' في قائمة الإكمال التلقائي فتكون عملية التحقق فاشلة
e.Cancel = True

شغل البرنامج وقم بالتجربة