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

كيف أعرف أن المستخدم يكتب رقم أو حرف

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

السلام عليكم ورحمة الله

أخواني الكرام أنا أعرف طريقة اجبار المستخدم على الكتابة داخل تكست بوكس إما حروف فقط أو أرقام فقط

ولكني اشتغلت على برنامج من قبل وميزته أنه يوجد تكست بوكس واحد فقط فإذا كان المستخدم يكتب رقم يقوم بالإكمال التلقائي ويبحث عن رقمه في حقل الرقم أما إذا كان المستخدم يكتب حرف فيبحث عن اسمه في حقل الاسم طبعا ذلك كله بدون كمبوبوكس ولا شيء

فكيف أعرف ذلك علما بأني طبقت هذه الطريقة بس عن طريق كمبوبوكس يحمل إما رقم المستخدم أو اسم المستخدم

فأنا أريد فعل ذلك بدون وضع كمبوبوكس

باختصار كيف أعطي أمر if then في حدث keypress يتحقق من كتابة المستخدم إذا كان رقم أو حرف

وللعلم فـأنا أعمل على فيجوال دوت نت 2005

وهذا هو الكود المستخدم ويعمل بكفاءة ولكن باستخدام كومبوبوكس فأنا أريد فعل ذلك بدون الكمبوبوكس

اقتباس
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

Dim c As Char

c = e.KeyChar

If combosearch.Text = "رقم الموظف" Then

If Not (Char.IsDigit© Or Char.IsControl©) Then

e.Handled = True

TextBox1.AutoCompleteMode = AutoCompleteMode.Suggest

TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource

Dim cmd As OleDbCommand = New OleDbCommand("SELECT comp_no From comp_basic", Cn)

Dim sdr As OleDbDataReader = cmd.ExecuteReader

While (sdr.Read())

TextBox1.AutoCompleteCustomSource.Add(sdr.Item("comp_no"))

End While

sdr.Close()

End If

ElseIf combosearch.Text = "اسم الموظف" Then

If IsNumeric(e.KeyChar) Then

e.Handled = True

TextBox1.AutoCompleteMode = AutoCompleteMode.Suggest

TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource

Dim cmd1 As OleDbCommand = New OleDbCommand("SELECT comp_name From comp_basic", Cn)

Dim sdr1 As OleDbDataReader = cmd1.ExecuteReader

While (sdr1.Read())

TextBox1.AutoCompleteCustomSource.Add(sdr1.Item("comp_name"))

End While

Else

End If

End If

End Sub

وشكرا لكم جميعا

تم تعديل هذه المشاركة بواسطة ميدو صلاح في 21 أكتوبر 2009 في 07:37

#2

الكومبو بوكس يستخدم فى معرفة المكان الذى سيتم البحث به داخل قاعدة البيانات حيث انك تختار اما الإسم او الرقم و عند الإستغناء عن الكومبو يصبح حقل البحث يعتمد على نوع القيمه المدخله من المستخدم بمعنى انه إذا كان مربع النص فارغ فيتم حذف قائمة الـ AutoComplete اما اذا كان محتوى مربع النص رقم فيتم البحث بإستخدام رقم الموظف و غير ذلك يتم البحث بإستخدام اسم الموظف.

بالنسبه لعملية التحقق من نوع القيمه داخل مربع النص فالكود شكله كالتالى

Try
	Dim ret As Interger = CType(TextBox1.Text,Integer)
Catch ex as InvalidCastException
	...
End Try

ليصبح الكود غير مكرر فسأقوم بإستخدام متغير واحد لأقوم بوضع اسم الحقل داخله بناءا على نوع القيمه داخل مربع النص

Dim FieldName As String = "comp_name"

Try
	CType(TextBox1.Text,Integer)
	FieldName = "comp_no"
Catch : End Try

هذه هى النسخه الكامله

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles TextBox1.KeyPress

	If TextBox1.Text.Length = 0 Then
		TextBox1.AutoCompleteCustomSource.Clear()
		Return
	End If

	Dim FieldName As String = "comp_name"

	Try
		CType(TextBox1.Text,Integer)
		FieldName = "comp_no"
	Catch : End Try

	TextBox1.AutoCompleteMode = AutoCompleteMode.Suggest
	TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource
	Dim cmd As OleDbCommand = New OleDbCommand( String.Format("SELECT {0} From comp_basic",FieldName), Cn )
	Dim sdr As OleDbDataReader = cmd.ExecuteReader

	While (sdr.Read())
		TextBox1.AutoCompleteCustomSource.Add( sdr.Item(FieldName) )
	End While

	sdr.Close()

End Sub

و الله ولى التوفيق

مدونتي: C++ Tips and Tricks

#3

أعتذر جدا على التأخير لأن النت كان عطلان عندي وشكرا جدا جدا جدا على الشرح الوافي وبارك الله فيك وربنا يزيد من أمثالك

شكرررررررااااااااااااااااااا

#4

أخوي الكريم أنا أرسلت مشكلتي التي تظهر معي ولكن للأسف لم تخزن على الموقع ولم أنتبه لها إلا الآن

أنا سويت نفس الكود السابق ولكن ظهرت لي مشاكل وهي أن التكست بوكس يقبل حرف ولو حبيت أغيره لرقم لم يقبل وعند تغييره يخرج ويظهر لي رسالة خطأ وعدلت الكود كما يلي ولكن نفس المشكلة فياريت لو حضرتك تجرب نفس الكود وتقولي إزاي أحل هذه المشكلة وشكرا


Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If TextBox1.Text.Length = 0 Then
TextBox1.AutoCompleteCustomSource.Clear()
Return
End If

Dim FieldName As String = "comp_name"
Dim z As Integer

Try
z = CType(TextBox1.Text, Integer)
FieldName = "comp_no"
Catch : End Try

TextBox1.AutoCompleteMode = AutoCompleteMode.Suggest
TextBox1.AutoCompleteSource = AutoCompleteSource.CustomSource
Dim cmd As OleDbCommand = New OleDbCommand(String.Format("SELECT {0} From comp_basic", FieldName), Cn)
Dim sdr As OleDbDataReader = cmd.ExecuteReader

While (sdr.Read())
TextBox1.AutoCompleteCustomSource.Add(sdr.Item(FieldName))
End While

sdr.Close()
ومرفق أيضا رسالة الخطأ

End Sub

post-96469-1256453434_thumb.jpg

#5

هل من مجيب يا اخوان على حل لمشكلتي

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