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

عدم مسح محتوى الخليه عند الانتقال لها وبداء الكتابه فيها

بدأه sunbol في 25 أغسطس 2009 · 3 رد · 388 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اخواني الكرام

كل عام وانتو بصحة وعافية

رمضان كريم

لدي داتا غريد فيو تحتوي على بيانات

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

انا جرب باكثر من طريقه لاجعله عندما يتنقل من خليه الى اخرى ويقوم بالكتابه لا يمسح الكلام الموجود بس يكمل بعده

ولكن للاسف لم استطع فعل ذلك

في المرفق يوجد مثال بسيط لداتا غريد فيو تحتوي على بيانات (للتجربة) لم استطع للاسف فعل ما اريده بها

win_test.rar

36cm7.gif
#2

الطريقة التي وجدت ليست بـ"النظيفة" و لكنها تعمل :

- قم بتحديد الخاصية KeyPreview على true للنمودج

- اشترك في الحدث KeyDown للنمودج و في الدالة المشتركة في الحدث :

	Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
		If Me.ActiveControl Is DataGridView1 Then
			If Not (DataGridView1.CurrentCell Is Nothing) Then
				If Not DataGridView1.CurrentCell.IsInEditMode Then
					If e.KeyCode <> Keys.F2 Then
						DataGridView1.BeginEdit(False)
					End If
				End If
			End If
		End If
	End Sub

الكود يتحرى إذا كان الكنترول النشيط حاليا على الفورم هو الداتاجريدفيو تم يقوم بتهيئة الخلية للوضع تحرير الذي يضع الكيرسور في آخر النص و بهذا يكمل المستخدم تحرير محتوى الخلية و لا يمحيها.

تحياتي...

تم تعديل هذه المشاركة بواسطة محمد رضى في 25 أغسطس 2009 في 15:30

#3

شكرا اخي الكريم

ولكن ماذا تعني بغير النظيفة

هل من الممكن ان اواجه اي مشاكل مستقبلا

بما انك كتبت الكود المناسب لما لا نستخدمه مع حدث اخر

Private Sub DataGridView1_CellEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEnter
		DataGridView1.BeginEdit(False)
	End Sub

مع العلم انه يعمل في الحالتين ولكن اتمنى ان لا اواجه مشاكل مستقبلا

شكرا اخي الكريم

تم تعديل هذه المشاركة بواسطة sunbol في 25 أغسطس 2009 في 20:04

36cm7.gif
#4

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

تحياتي...

sunbol كتب:
شكرا اخي الكريم

ولكن ماذا تعني بغير النظيفة

هل من الممكن ان اواجه اي مشاكل مستقبلا

بما انك كتبت الكود المناسب لما لا نستخدمه مع حدث اخر

Private Sub DataGridView1_CellEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEnter
		 DataGridView1.BeginEdit(False)
	 End Sub

مع العلم انه يعمل في الحالتين ولكن اتمنى ان لا اواجه مشاكل مستقبلا

شكرا اخي الكريم

لم ألاحظ بقية الرد عندما كنت أكتب.

إذا كان الكود الذي أرفقت يفي بالغرض فهو أحسن و أبسط من الكود الذي أرفقت أنا.

تحياتي...

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…