في UserControl Class
كيف يمكن جعل UserControl Component
يحس بالضغط علي زر Tab بدون أنتقال Focus لأداة أخري علي الفورم
أعلم أن Form.KeyPreview المسئولة بحل المشكلة
ولكن لم أجد هذة الخاصية موجودة بالفئة UserControl
ما الحل ؟
في UserControl Class
كيف يمكن جعل UserControl Component
يحس بالضغط علي زر Tab بدون أنتقال Focus لأداة أخري علي الفورم
أعلم أن Form.KeyPreview المسئولة بحل المشكلة
ولكن لم أجد هذة الخاصية موجودة بالفئة UserControl
ما الحل ؟

سورة العنكبوت
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
سلسلة أنماط التصاميم البرمجية Desgin Patterns
سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
كنترول ASP.NET DataGrid CheckBoxColumn
مشروع الكنترول الأنيق (إهداء للفريق العربي)
الورش الإلكترونية IT Workshops
كنترول ColorPicker لمطوري الويب
أن كان مافيش خاصية تدعم هذا , إلا يوجد دوال API .
للأهمية

سورة العنكبوت
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
سلسلة أنماط التصاميم البرمجية Desgin Patterns
سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
كنترول ASP.NET DataGrid CheckBoxColumn
مشروع الكنترول الأنيق (إهداء للفريق العربي)
الورش الإلكترونية IT Workshops
كنترول ColorPicker لمطوري الويب
خاصية KeyPreview تكون للـ Container والتي غالبا ماتكون عبارة Form .. وهي تعني أن أي حدث يتم تمريره على الـ Form قبل أن يتم تنفيذ الحدث ..
حاول استخدام WndProc الخاص بـالـ Form !
بسم الله الرحمن الرحيم
بعد محاولات كثيرة وجدت حل هذة المشكلة
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; } . . .}
سورة العنكبوت
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
سلسلة أنماط التصاميم البرمجية Desgin Patterns
سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
كنترول ASP.NET DataGrid CheckBoxColumn
مشروع الكنترول الأنيق (إهداء للفريق العربي)
الورش الإلكترونية IT Workshops
كنترول ColorPicker لمطوري الويب
جميل أخي الكريم ..
أنت قمت باستخدام PreProcessMessage بدلا من استخدام WndProc ..
لو اضفت بدلا من return false التالي لكان أفضل:
return base.PreProcessMessage(ref msg);
:)
كلامك صحيح أخي أبوفهد وشكرا لك
ولكن هذا سوف يؤدي لأنتقال focus لأداة أخري
ولكني كنت أريد عدم أنتقال ال focus من ال control
لذلك قمت بأرجاع القيمة false

سورة العنكبوت
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
سلسلة أنماط التصاميم البرمجية Desgin Patterns
سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
كنترول ASP.NET DataGrid CheckBoxColumn
مشروع الكنترول الأنيق (إهداء للفريق العربي)
الورش الإلكترونية IT Workshops
كنترول ColorPicker لمطوري الويب
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);
}
}
.
.
.
}مشكور أخي للتوضيح
ولكن الدالة 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);
}
}
.
.
.
}
سورة العنكبوت
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
حلم طالما كان يراودني حتي قهرته بحمد الله ليكون حقيقة
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
سلسلة أنماط التصاميم البرمجية Desgin Patterns
سلسلة أنماط التصاميم البرمجية Desgin Patterns | كتيب هذه الدروس (إعداد أحمد غريب)
ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
كنترول ASP.NET DataGrid CheckBoxColumn
مشروع الكنترول الأنيق (إهداء للفريق العربي)
الورش الإلكترونية IT Workshops
كنترول ColorPicker لمطوري الويب
نعم أخي العزيز كان لا بد من وضع قيمة ارجاع للدالة لكنني نسيت ذلك ..
شكرا لك :)
هذا الموضوع مغلق.