منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : ما الحدث الذي يطلقه الزر Tab
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم
كل الازرار تطلق الحدث KeyDown وغيره ما عدا الزر تاب
ما الحدث الذي يطلقه
كيف اعرف ان المستخدم ضغط عليه
الحدث الافتراضي هو.......SelectedIndexChanged

و في اللينك التلي ستجد قائمة بكل الاحداث الخاصة بهذا الكونترول

اللينــــــــــــــــــــك
اخي جزاك الله خيرا
انا اقول الزر Tap ما قولت الاوبجكت TabControl
هههه
الزر تاب من لوحة المفاتيح
ههههههههههههههه.............عفوا

عموما كل الباتون الموجودة علي لوحة المفاتيح لها قيمة
بخصوص Tab

هي تقوم ب القفز من كونترول الي كونترول اخر داخل الفورم و هكذا
لكن في حالة الكتابة داخل TextBox مثلا فهي تقفز مسافة ثابتة معينة
إقتباس :لكن في حالة الكتابة داخل TextBox مثلا فهي تقفز مسافة ثابتة معينة

لا يتم عندي ذلك
بل ينتقل ايضا الي العنصر التالي

الفكرة : اريد عند الضغط علي الزر Tap يفعل شي معين هل يوجد طريقة لذلك
السلام عليكم

تستطيع ذلك باستخدام LostFocus للحدث المطلوب

يعطيك العاقية
السلام عليكم...

العديد من المكونات تعتبر بعض المفاتيح كمفاتيح تنقل (Navigation Keys) و ليست مفاتيح إدخال (Input Keys). و بالتالي لا يتم قدح الحدث KeyDown لتلك النفاتيح. مثلاً المكون Button يعامل مفاتيح الأسهم كمفاتيح تنقل و بالتالي لا يقع الحدث KeyDown مع مفاتيح الأسهم على الـ Button.

نفس الأمر يكون مع معظم المكونات بالنسبة إلى المفتاح Tab. أي أنه يُعتبر مفتاح تنقل و ليس مفتاح إدخال.

للتعامل مع هذه الحالات لديك خياران بسيطان، و كلاهما يحتاج إلى استعمال الحدث PreviewKeyDown الذي يحدث قبل الحدث KeyDown مهما كان المفتاح المضغوط:

1. إذا كنت تريد التعامل مع ضغط المفتاح Tab مع السماح بالانتقال إلى المكون التالي (لأن المفتاح Tab يعمل بشكل افتراضي على الانتقال إلى المكون التالي) فاكتب الكود الذي تريده مباشرة في إجراء الحدث PreviewKeyDown. لا يمكنك هنا إلغاء السلوك الافتراضي للمفتاح Tab (أو أي مفتاح آخر) لأن البارامتر e الذي يحتوي على بارامترات الحدث (من النوع PreviewKeyDownEventArgs) لا يحتوي على الخاصية Handled.

2. إذا كنت تريد التعامل مع ضغط المفتاح Tab مع إلغاء عمله الافتراضي (أي منع الانتقال إلى المكون التالي):

أ. اكتب في الحدث PreviewKeyDown الكود التالي:

كود :
If e.KeyCode = Keys.Tab Then
        e.IsInputKey = True
    End If

حيث هذا الكود يجعل المكون يعتبر أن المفتاح Tab هو مفتاح إدخال، و بالتالي سيعمل على قدح الحدث KeyDown.

ب. اذهب إلى الحدث KeyDown و اكتب الكود الذي تريده.

* ستلاحظ في الحالة الثانية (أي استعمال e.IsInputKey = True و كتابة الكود في الحدث KeyDown) أن الـ Focus لا تنتقل من المكون إلى المكون الذي يليه.

نرجو الاستفادة و السلام.
نحمده ونصلي على رسوله الكريم

اجعل خاصية الـ keypreview للنموذج تساوي true واستخدم حدث الـ keypress التابع للنموذج ايضا لكتابة:
كود :
If CByte(e.KeyChar) = 9 Then
    MessageBox.Show("[TAB]")
End If
السلام عليكم ورحمة الله

اسف علي التأخير في الرد كنت مشغول جدا الله المستعان

جزاكم الله خيرا وبارك فيكم
اخي ناجي كفيت ووفيت اسئل الله تعالي ان يجزيك خيرا
انا وجدت نفس التوضيح عندما بحثت لاكن للاسف ظنيت ان الزر تاب لا يفجر اي حدث حتي الحدث PreviewKeyDown فقلت كيف لي ان اكتب كود في حدث لن يتم تفجيره
وهذا الخطاء طبعا استفدت منه فائدة كبيرة وهي
يجب ان اجرب اي كود قبل ان احكم عليه مجرد القراءة السريعة للكود لا تكفي في الحكم عليه الا ان كان هناك سايق تجربة طبعا هههه


اخي ربيع جزاك الله خيرا
ولي سؤال هل الخاصية keypreview تجعل الفورم يتلقي الحدث قبل الاوبجكت
نحمده ونصلي على رسوله الكريم

لا اعلم ذلك مسبقا لكني جربت التالي:
كود :
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
    MessageBox.Show("Form");
}

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    MessageBox.Show("Control");
}

وكانت الاسبقية للنموذج....
الصفحات : 1 2