الاخوة الافاضل بالمنتدي
محتاج منكم مساعدة في التنقل داخل صفوف الداتا جريد
حيث انني عندما اضغط مفتاح الانتر ينزيل الي اسفل وانا اريد بعد الضغط علي الانتر ينتقل الي الخانة التالية
في نفس الصف
فهل من معين جزاكم الله خيراً
الاخوة الافاضل بالمنتدي
محتاج منكم مساعدة في التنقل داخل صفوف الداتا جريد
حيث انني عندما اضغط مفتاح الانتر ينزيل الي اسفل وانا اريد بعد الضغط علي الانتر ينتقل الي الخانة التالية
في نفس الصف
فهل من معين جزاكم الله خيراً
السلام عليكم أخي الكريم :
المفتاح ( Tab ) سيحل مشكلتك بإذن الله ... فإما :
1- بضغط ( Tab ) سينتقل التركيز إلى الخلية التالية في DataGridView وهو المطلوب .
2- إذا أردت استخدام المفتاح ( Enter ) للقيام بذلك , فعليك الدخول إلى حدث KeyDown للأداة DataGridView وفعل مايلي :
* إلغاء فعل ( Enter ) القديم < حيث كان ينتقل عموديا > وجعل فعل ( Tab ) هو المسيطر عند ضغط ( Enter )
وهن أجل ذلك نستخدم الوظيفة SuppressKeyPress .
* إرسال فعل الضغط على ( Tab ) إلى حدث الضغط على ( Enter ) , فيصبح لدينا ما يلي :
Private Sub dgv_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles dgv.KeyDown
If e.KeyCode = Keys.Enter Then
e.SuppressKeyPress = True
SendKeys.Send("{Tab}")
End If
End Subوهو المطلوب .
أرجو أن يكون هذا هو المقصود ... وفقكم الله لما يحب ويرضى في الدنيا والآخرة .
نرجو الدعاء لنا بالتوفيق في الدنيا والآخرة ...
الاخ الحبيب ابو همام
السلام عليكم ورحمة الله وبركاته
في البدايه وفقك الله لما تحب وترضي وبالتوفيق في الدنيا والاخرة وجزاك الله خيراً
ما قلته هو الذي اريده وفعلت ما قلت ومفتاح الانتر ينتقل فعلا كما كنت اريد ولكنه ينتقل في السجلات الموجودة مسبقا
يعني لو اردت ان ادخل بيانات جديدة فعندما اضغط انتر لاينتقل الي الخلية التالية افقيا
بل ينزل الي الخلية التالية عموديا فهل هناك حل
وجزاك الله خيراً
مرفق المثال
أسف
في البدايه وفقك الله لمايحب ويرضي
السلام عليكم أخي الكريم :
بعد تحليل حركة انتقال الخلايا , هذا ما استطعت أن أخرج به :
Private Sub DetailsDataGridView_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DetailsDataGridView.CellEndEdit
SendKeys.Send("{Enter}")
SendKeys.Send("{esc}")
End Sub
Private Sub DetailsDataGridView_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DetailsDataGridView.KeyDown
If e.KeyCode = Keys.Enter Then
If Me.DetailsDataGridView.IsCurrentCellInEditMode Then
Me.DetailsDataGridView.CancelEdit()
Else
e.SuppressKeyPress = True
SendKeys.Send("{Tab}")
End If
End If
End Subأرجو أن يفي هذا بالغرض , سامحونا إن كان هناك أي خلل .... وفقكم الله .
شكر جزيلا ابو همام
الكود شغال كويس
وفقكم الله لما يحب ويرضى في الدنيا والآخرة
اللهم وفقه في الدنيا والاخرة
وجزاك الله خيرا
وسلام عليكم ورحمة الله وبركاته
الأخوة الافاضل
الكود السابق استطيع من خلاله اتنقل داخل الداتا جريد بمفتاح الانتر ولكن عن الضغط علي الانتر لاضافة بيانات جديدة لا يقوم بالاضافة وبيرجع لآخر خانة انا سجلت فيها يعني مش بيضيف صف جديد
فهل يوجد تعديل لهذا الكود لكي يضيف صف جديد في الداتا جريد ومن ثم ادخال البيانات وحفظها
وجزاكم الله خيراً
السلام عليكم :
أخي الكريم جرب أن تحذف السطر :
Me.DetailsDataGridView.CancelEdit()
من الكود السابق.
ولا تنسى أن تجعل أداة الـ DataGridView قابلة للتعديل و الإضافة .
وفقكم الله .
السلام عليكم
استخدم السلوك ProcessCmdKey الذي يقوم بنقل المؤشر وفقاً للضغط على الزر الذي تعينه انت.
هذا الكود وهو عبارة عن قالب برمجي مكتبي او ما يعرف بـ Class Library فاي رسالة ترسل لنظام التشغيل كالضغط على الازرار
يستطيع هذا القالب ان يتضمنها.
على سبيل المثال
Protected Overrides Function ProcessCmdKey _
(ByRef msg As System.Windows.Forms.Message, _
ByVal keyData As System.Windows.Forms.Keys) As Boolean
Try
If msg.WParam.ToInt32() = CInt(Keys.Enter) Then
SendKeys.Send("{Tab}")
Return True
End If
Return MyBase.ProcessCmdKey(msg, keyData)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Functionشاهد المرفق في الاسفل, بالتوفيق إن شاء الله.
في المثال يتضح المقال
الاخوة الافاضل جميعاً
واخص بالذكر:
أ/ أبو همام
واستاذنا ومشرف المنتدي الاستاذ/ الغملاسي
شكراً جزيلا لكم جميعاً
وجزاكم الله خيراً ووفققك الله
والسلام عليكم ورحمة الله وبركاته
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…