لدي مربعات نصوص عديده واستخدمت المفتاح انتر للتنقل فيما بينها عند ادخال البيانات ووضعت في حدث الضغط على انتر رسالة تخبر المستخدم بإدخال بيانات عند بعض التكست بوكس
المشكله انه يمكن تجاوز هذا الحدث بالضغط على مفتاح تاب وبالماوس
كيف اخلي مفتاح تاب والماوس ينهجون نفس منهج مفتاح انتر
المطلب الثاني
لدي تكست بوكس يكتب فيه المستخدم السجل المدني , المطلوب هو بعد الضغط على مفتاح انتر تتم عملية التحقق من السجل المدني هل هو موجود ام لا اذا كان موجود تظهر رساله بان هذا السجل موجود واذا لم يكن كذلك يستمر انتقاله الى التكست بوكس التالي
جرب حدث Lost focus
واي اشكال خبر به وباذن الله محلولة
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
لا طبعا لا اقصد هذا لان حسب علمي انك وجدت كود طويل يحول زر انتر الى زر تاب.
اللي اريده منك الان تسوي مثال بسيط وتكتب كود تحقق ابسط.
لازم مثال جديد مستقل ولو اعجبتك الطريقة تطبقها على مثالك وان لم تعجبك انساها.
ملاحظة!
ترى اللي تريده طبقتها عدة مرات وماشية معي تمام
اول مربع نص اسمه tn والباقي على التوالي:
Textbox1
Textbox2
استخدمت حدثين :
1-LostFocus
2-KeyDown
وسواء نقرت بزر الادخال Enter ام نقرت زر Tab
وهذا هو الكلاس
كود :
Public Class Form1
Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
My.Settings.m = Me.Location
My.Settings.Save()
End Sub
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.Location = My.Settings.m
tn.Focus()
End Sub
Private Sub tn_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles tn.KeyDown
If e.KeyData = Keys.Enter Then
If sender.text = "" Then
sender.focus()
Else
TextBox1.Focus()
End If
End If
End Sub
Private Sub tn_LostFocus(sender As Object, e As System.EventArgs) Handles tn.LostFocus
If sender.text = "" Then
sender.focus()
End If
End Sub
Private Sub TextBox1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyData = Keys.Enter Then
If tn.Text.Trim.Replace(" ", "") = "" Then Exit Sub 'Or TextBox1.Text.Trim.Replace(" ", "") = "" Then Exit Sub
If sender.text = "" Then
sender.focus()
Else
TextBox2.Focus()
End If
End If
End Sub
Private Sub TextBox1_LostFocus(sender As Object, e As System.EventArgs) Handles TextBox1.LostFocus
If tn.Text.Trim.Replace(" ", "") = "" Then Exit Sub
If sender.text = "" Then
sender.focus()
End If
End Sub
Private Sub TextBox2_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles TextBox2.KeyDown
If e.KeyData = Keys.Enter Then
If tn.Text.Trim.Replace(" ", "") = "" Or TextBox1.Text.Trim.Replace(" ", "") = "" Then Exit Sub
If sender.text = "" Then
sender.focus()
End If
End If
End Sub
Private Sub TextBox2_LostFocus(sender As Object, e As System.EventArgs) Handles TextBox2.LostFocus
If tn.Text.Trim.Replace(" ", "") = "" Or TextBox1.Text.Trim.Replace(" ", "") = "" Then Exit Sub
If sender.text = "" Then
sender.focus()
End If
End Sub
End Class
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
والمشروع مرفق vb 2010
لا اظنه يعمل لديك لانك ذكرت ان اصدارك اكسبرس
لكن الكلاس هذا هو مكتوب فوق المشاركة هذي
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
الكود اللي عندي اللي يخص التاب هو عمله يحول الانتر الى تاب علشان كذا استغنيت عنه واعتمدت على مفتاح الانتر لو استخدم الكود الأول رح يتلغي مفتاح الانتر ويصير عمله مثل عمل مفتاح التاب
المشكله في مفتاح انتر انه يطلع صوت ولكن ضروري لها حل
اللي ابيه الان هو التحقق من البيانات وعدم ترك مربع النص سواء بالانتر او التاب او الماوس اذا كان مربع النص لم يتحقق فيه الشرط وهو انه ارقام فقط ولا يترك فارغ
فين المشكلة لو تستخدم حدث فقدان التركيز؟؟؟؟
اضفها للي عندك وجرب
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
السلام عليكم
بالنسبة للقسم الثاني من السؤال
في الحدث KeyDown
اكتب هذا الكود
كود :
Private Sub TextBox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = Keys.Enter Then
TextBox2.Focus()
End If
End Sub
وفي الحدث Validated
اكتب هذا الكود
كود :
Private Sub TextBox1_Validated(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.Validated
هذا الكود غرضه التأكد من السجل المدني موجود اوغير موجود
Dim con As New SqlConnection
Dim cmd As New SqlCommand
con.Close()
con.ConnectionString = "Server=your server;Database=your database;Integrated Security=true"
cmd.Connection = con
con.Open()
cmd.Parameters.Clear()
cmd.CommandText = "Select * from your table where Number=@un"
cmd.Parameters.Add("@un", SqlDbType.NVarChar, 50).Value = TextBox1.Text
Dim dr As SqlDataReader = cmd.ExecuteReader()
If dr.HasRows = True Then
MessageBox.Show("هذا السجل موجود", "تحذير", MessageBoxButtons.OK, MessageBoxIcon.Warning)
TextBox1.Focus()
TextBox1.SelectionStart = 0
con.Close()
الكود معمول للـ SQL انا عدلت عليه بس يوقف عند الداتا ريدر وبالتحديد عند السطر التالي :
PHP كود :
Dim dr As OleDbDataReader = cmd.ExecuteReader()
ارجو اصلاح المشكله
وهذا الكود بالكامل :
PHP كود :
Private Sub txtCRN_Validated(sender As Object, e As EventArgs) Handles txtCRN.Validated
Dim cmd As New OleDbCommand ApoSYSconn.Close() ApoSYSconn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=.\ApoSYS.ACCDB" cmd.Connection = ApoSYSconn ApoSYSconn.Open() cmd.CommandText = "Select * from tblCustomers where CivilRegNum=txtCRN"
Dim dr As OleDbDataReader = cmd.ExecuteReader() If dr.HasRows = True Then MessageBox.Show("هذا السجل موجود", "تحذير", MessageBoxButtons.OK, MessageBoxIcon.Warning) txtCRN.Focus() txtCRN.SelectionStart = 0 ApoSYSconn.Close()