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

KeyPreview ?

مغلق
بدأه الحسين في 13 فبراير 2003 · 8 رد · 1,131 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

في UserControl Class

كيف يمكن جعل UserControl Component

يحس بالضغط علي زر Tab بدون أنتقال Focus لأداة أخري علي الفورم

أعلم أن Form.KeyPreview المسئولة بحل المشكلة

ولكن لم أجد هذة الخاصية موجودة بالفئة UserControl

ما الحل ؟

29_5.gif

سورة العنكبوت

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

مشروع Arabic PHP.NET

حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

سلسلة أنماط التصاميم البرمجية Desgin Patterns

سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

كنترول ASP.NET DataGrid CheckBoxColumn

كنترول ProgressBar

كنترول UltraPanel

مشروع الكنترول الأنيق (إهداء للفريق العربي)

الورش الإلكترونية IT Workshops

تعقب الأخطاء error tracing

كنترول ColorPicker لمطوري الويب

RichTextBox Control لمطوري ال ASP.Net

حمل كتاب جافا سكربت عربي

#2

أن كان مافيش خاصية تدعم هذا , إلا يوجد دوال API .

للأهمية

29_5.gif

سورة العنكبوت

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

مشروع Arabic PHP.NET

حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

سلسلة أنماط التصاميم البرمجية Desgin Patterns

سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

كنترول ASP.NET DataGrid CheckBoxColumn

كنترول ProgressBar

كنترول UltraPanel

مشروع الكنترول الأنيق (إهداء للفريق العربي)

الورش الإلكترونية IT Workshops

تعقب الأخطاء error tracing

كنترول ColorPicker لمطوري الويب

RichTextBox Control لمطوري ال ASP.Net

حمل كتاب جافا سكربت عربي

#3

خاصية KeyPreview تكون للـ Container والتي غالبا ماتكون عبارة Form .. وهي تعني أن أي حدث يتم تمريره على الـ Form قبل أن يتم تنفيذ الحدث ..

حاول استخدام WndProc الخاص بـالـ Form !

#4

بسم الله الرحمن الرحيم

بعد محاولات كثيرة وجدت حل هذة المشكلة

public class CSmartGrid : System.Windows.Forms.UserControl{ . . . .	private const int WM_CHAR  = 0x0102;	private const int WM_SCHAR = 0x0100;	private const int VK_TAB    = 0x09;	// ASCII Code in Hexadecimal	public override bool PreProcessMessage(ref Message msg)	{  char cTest = (char)msg.WParam;  if( msg.Msg == WM_CHAR || msg.Msg == WM_SCHAR )  { 	 switch(cTest) 	 {    case (char) VK_TAB    :   	 MessageBox.show("right key or back key is send");   	 break; 	 }  }  return false;	} . . .}

29_5.gif

سورة العنكبوت

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

مشروع Arabic PHP.NET

حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

سلسلة أنماط التصاميم البرمجية Desgin Patterns

سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

كنترول ASP.NET DataGrid CheckBoxColumn

كنترول ProgressBar

كنترول UltraPanel

مشروع الكنترول الأنيق (إهداء للفريق العربي)

الورش الإلكترونية IT Workshops

تعقب الأخطاء error tracing

كنترول ColorPicker لمطوري الويب

RichTextBox Control لمطوري ال ASP.Net

حمل كتاب جافا سكربت عربي

#5

جميل أخي الكريم ..

أنت قمت باستخدام PreProcessMessage بدلا من استخدام WndProc ..

لو اضفت بدلا من return false التالي لكان أفضل:

return base.PreProcessMessage(ref msg);

:)

#6

كلامك صحيح أخي أبوفهد وشكرا لك

ولكن هذا سوف يؤدي لأنتقال focus لأداة أخري

ولكني كنت أريد عدم أنتقال ال focus من ال control

لذلك قمت بأرجاع القيمة false

29_5.gif

سورة العنكبوت

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

مشروع Arabic PHP.NET

حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

سلسلة أنماط التصاميم البرمجية Desgin Patterns

سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

كنترول ASP.NET DataGrid CheckBoxColumn

كنترول ProgressBar

كنترول UltraPanel

مشروع الكنترول الأنيق (إهداء للفريق العربي)

الورش الإلكترونية IT Workshops

تعقب الأخطاء error tracing

كنترول ColorPicker لمطوري الويب

RichTextBox Control لمطوري ال ASP.Net

حمل كتاب جافا سكربت عربي

#7
public class CSmartGrid : System.Windows.Forms.UserControl

{

 .

 .

 .

 .



	private const int WM_CHAR  = 0x0102;

	private const int WM_SCHAR = 0x0100;



	private const int VK_TAB    = 0x09;	// ASCII Code in Hexadecimal



	public override bool PreProcessMessage(ref Message msg)

	{

  char cTest = (char)msg.WParam;

  if( msg.Msg == WM_CHAR || msg.Msg == WM_SCHAR )

  {

 	 switch(cTest)

 	 {

    case (char) VK_TAB    :

   	 MessageBox.show("right key or back key is send");

   	 break;

 	 }

  }

                                else

                                {

                                      return base.PreProcessMessage(ref msg);

                                }

	}



 .

 .

 .

}
#8

مشكور أخي للتوضيح

ولكن الدالة PreProcessMessage يجب أن يكون لها returning

public class CSmartGrid : System.Windows.Forms.UserControl

{

 .

 .

 .

 .



	private const int WM_CHAR  = 0x0102;

	private const int WM_SCHAR = 0x0100;



	private const int VK_TAB    = 0x09;	// ASCII Code in Hexadecimal



	public override bool PreProcessMessage(ref Message msg)

	{

  char cTest = (char)msg.WParam;

  if( msg.Msg == WM_CHAR || msg.Msg == WM_SCHAR )

  {

 	 switch(cTest)

 	 {

    case (char) VK_TAB    :

   	 MessageBox.show(" Tab Key is pressed");

                return false;

   	 break;

 	 }

  }

                                else

                                {

                                      return base.PreProcessMessage(ref msg);

                                }

	}



 .

 .

 .

}

29_5.gif

سورة العنكبوت

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

مشروع Arabic PHP.NET

حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

سلسلة أنماط التصاميم البرمجية Desgin Patterns

سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

كنترول ASP.NET DataGrid CheckBoxColumn

كنترول ProgressBar

كنترول UltraPanel

مشروع الكنترول الأنيق (إهداء للفريق العربي)

الورش الإلكترونية IT Workshops

تعقب الأخطاء error tracing

كنترول ColorPicker لمطوري الويب

RichTextBox Control لمطوري ال ASP.Net

حمل كتاب جافا سكربت عربي

#9

نعم أخي العزيز كان لا بد من وضع قيمة ارجاع للدالة لكنني نسيت ذلك ..

شكرا لك :)

هذا الموضوع مغلق.

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