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

الانتقال بين اعمدة الداتا غريد فيو بواسطة Enter,

بدأه sunbol في 19 ديسمبر 2008 · 3 رد · 1,012 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اخواني الكرام السلام عليكم ورحمة الله وبركاتة

عندي سوال

كيف يمكنني ان انتقل عن طريق الانتر بين اعمدة الداتا غريد فيو

اي يكون الانتقال الى الخلية التاليه على الجنب وليس الخليه السفلى

كما لو انك كبست على tab

انا جربت الكود التالي

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

كما هو منتشر في اغلب المنتديات

ولكن للاسف فان الكود لا يعمل بالشكل المطلوب

والسبب ان هذا الكود يقوم بعمل tab ليس فقط لخلايا الداتاغريد فيو كما هو مطلوب

لا بل الى جميع الادوات الموجوده في الـ form ككل

كمثال بسيط افترض انو لدينا صفحه فيها الادوات التالية

textbox

datagrid

button

ولنفترض ان الموشر في الـtextbos

فباستخدام ها الكود

كلما ضغط المستخدم على enter راح ينتقل الى الداتا غريد فيو وبعد ذلك الى الخلايا في الداتا غريد فيو الى ان ينتهي من الخلايا ثم ينتقل الى الاداء التاليه والتى هي البوتم واذا ضغط المستخدم على البوتم عن طريق enter فانه ينتقل الى الاداء التى تليه وهكذا

(حتى لو كان بوتم ضغط على enter فانه لن ينفذ حدث البوتم بل سينتقل الى الاداه التى تليه)

كما قلت لكم من وجهه نظري فان هذا الكود عقيم بالعكس يضر بالمستخدم اكثر من نفعه

الكود التالي ينفذ المطلوب

Private Sub DataGridView1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DataGridView1.KeyDown
		If e.KeyCode = Keys.Enter Then
			e.SuppressKeyPress = True
			SendKeys.Send("{TAB}")
		End If

ولكن للاسف عندما اضيف شرط اخر لعبارة if فانة لا يعمل كما اريد

كمثال على الشرط المطلوب

If e.KeyCode = Keys.Enter And Not DataGridView1.CurrentCell.Value Is Nothing Then

يعني المطلوب

ادا كانت فارغة وكبس enter فانه لا ينتقل

وبعد ما يدخل القيمة وكبس enter فانه ينتقل

هل من مساعد لحل هذا الكود

36cm7.gif
#2

يبدو ان السوال صعب للغاية

طيب نغير صيغة السوال

ما هو الحدث المستخدم في الداتا غريد فيو الذي يراقب ماهو الزر الذي ضغط عليه المستخدم في لوحة المفاتيح

للاسف فان الحدثkey_down والحدث key_KeyPress

يراقبان فقط مادا ضغط المستخدم فقط في المرة الاولى اما في المره الثانية فهو لا ينفذ شي

مثال

افرض انه لدينا داتا غريد فيو

وفيها خلايا والموشر في الخلية الاولى

ادا ضغط على انتر في لوحة المفاتيح فان الحدث السابق يعرف ماذا ضغط المستخدم

لكن لو ادخلت اي رقم او حرف (فانه لن يعرف ماذا ادخل)

مثال اخر

لو ادخلت رقم

ثم ضغط على انتر

وانت في نفس الخلية

فان الحدث لا يعلم ماذا ادخل المستخدم

الا لو انتقل الى خلية اخرى ثم رجع الى نفس الخلية

36cm7.gif
#3

السلام عليكم

اخي جرب procces left key او proccess right key

و ان شاء الله ببعتلك مثال قريبا

Sami is the name .net is the game

SamiKaraeen@hotmail.com

#4

اتمنى ذلك لانه بصراحه

لم اجد حل للسوال وقد جربت الكثير من الاكواد ومازلت اجرب

فارجو الافادة

36cm7.gif

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