نمایش نتایج 1 تا 4 از 4

نام تاپیک: تفاوت رویداد های کنترل دکمه در 4 رویداد PreviewKeyDown و KeyPress و KeyDown و KeyUp

  1. #1
    کاربر دائمی آواتار habibb
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    قُلْ هُوَ اللَّهُ أَحَدٌ
    پست
    423

    Lightbulb تفاوت رویداد های کنترل دکمه در 4 رویداد PreviewKeyDown و KeyPress و KeyDown و KeyUp

    سلام.

    اگر دکمه ای بر روی فرم قرار دهیم و بخواهیم تفاوت اجرای این 4 رویداد ( PreviewKeyDown و KeyPress و KeyDown و KeyUp) را در هنگام زدن دکمه های صفحه کلید با هم مقایسه کنیم .
    به این نتایج می رسیم

    فقط دکمه های زیر رویداد KeyPress را اجرا می کنند
    ولی بقیه ی رویداد ها را اجرا نمی کنند!؟!چرا؟
    دکمه ها عبارتند از : 1 2 3 4 5 6 7 8 9 0 (اعداد بالای حروف نه قسمت ماشین حسابی) و فاصلهSpace
    و q w e r t y u i o p [ ] ` a s d f g h j k l ; ' z x c v b n m , . / \

    حالا دکمه هایی که چند رویداد رو با هم به ترتیب زیر اجرا می کنند بازم چرا؟
    به ترتیب عبارتند از : PreviewKeyDown و KeyPress و KeyDown

    این دکمه ها دکمه های قسمت ماشین حسابی صفحه کلید می باشند بجز Enter همچنین BackSpace هم هست!

    حالا دکمه هایی هستند که به ترتیب PreviewKeyDown و KeyDown را اجرا می کنند؟ بازم چرا؟
    عبارتند از : Shift Control Alt Capslock Delete End PageUp PageDown Home End و دکمه های سوئیچ F ها

    دکمه هایی هم هستند که فقط رویداد PreviewKeyDown را اجرا می کنند
    که عبارتند از : هر دو Enter موجود در صفحه کلید و دکمه های ArrowKeys و Escape

    حالا سوال تناقض در تعریف این رویداد ها ست؟ نظرتان چیست ؟ آیا این رویداد ها در تمام ویندوز ها این گونه هستند؟

    طبق تعریف ؟ اگر کلیدی فشرده شود باید این 4 رویداد همه اتفاق افتند؟
    در ضمن منابعی ذکر کنید در این مورد

    متشکرم


    private void button1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
    {
    MessageBox.Show("button1_PreviewKeyDown");
    }
    private void button1_KeyPress(object sender, KeyPressEventArgs e)
    {
    MessageBox.Show("button1_KeyPress");
    }

    private void button1_KeyDown(object sender, KeyEventArgs e)
    {
    MessageBox.Show("button1_KeyDown");
    }

    private void button1_KeyUp(object sender, KeyEventArgs e)
    {
    MessageBox.Show("button1_KeyUp");
    }


    http://msdn.microsoft.com/en-us/libr...v=vs.110).aspx

    http://msdn.microsoft.com/en-us/libr...v=vs.110).aspx
    آخرین ویرایش به وسیله habibb : یک شنبه 01 دی 1392 در 22:48 عصر دلیل: درج منابع جدید

  2. #2
    کاربر دائمی آواتار abbas.oveissi
    تاریخ عضویت
    دی 1389
    محل زندگی
    تهران
    پست
    578

    نقل قول: تفاوت رویداد های کنترل دکمه در 4 رویداد PreviewKeyDown و KeyPress و KeyDown و KeyUp

    چه نکات جالبی من در مورد KeyPress تحقیق کردم و به این نکته رسیدم ( منبع هم MSDN هست ) :
    The KeyPress event is not raised by noncharacter keys; however, the noncharacter keys do raise the KeyDown and KeyUp events.
    یعنی تناقض نیست،ماها پیگیر نبودیم که خیلی کامل داکیومنت رویدادها رو مطالعه کنیم.
    اینم هم یه نکته در مورد PreviewKeyDown که برای من جالب بود،اصن نمیدونستم همچین Eventایی وجود داره
    Some key presses, such as the TAB, RETURN, ESC, and arrow keys, are typically ignored by some controls because they are not considered input key presses. For example, by default, a Button control ignores the arrow keys. Pressing the arrow keys typically causes the focus to move to the previous or next control. The arrow keys are considered navigation keys and pressing these keys typically do not raise the KeyDown event for a Button. However, pressing the arrow keys for a Button does raise the PreviewKeyDown event.
    فکرکنم خیلی از تناقض ها حل شد
    آخرین ویرایش به وسیله abbas.oveissi : یک شنبه 01 دی 1392 در 22:28 عصر

  3. #3
    کاربر دائمی آواتار habibb
    تاریخ عضویت
    خرداد 1388
    محل زندگی
    قُلْ هُوَ اللَّهُ أَحَدٌ
    پست
    423

    نقل قول: تفاوت رویداد های کنترل دکمه در 4 رویداد PreviewKeyDown و KeyPress و KeyDown و KeyUp

    نقل قول نوشته شده توسط abbas.oveissi مشاهده تاپیک
    چه نکات جالبی من در مورد KeyPress تحقیق کردم و به این نکته رسیدم ( منبع هم MSDN هست ) :
    The KeyPress event is not raised by noncharacter keys; however, the noncharacter keys do raise the KeyDown and KeyUp events.
    یعنی تناقض نیست،ماها پیگیر نبودیم که خیلی کامل داکیومنت رویدادها رو مطالعه کنیم.
    اینم هم یه نکته در مورد PreviewKeyDown که برای من جالب بود،اصن نمیدونستم همچین Eventایی وجود داره
    Some key presses, such as the TAB, RETURN, ESC, and arrow keys, are typically ignored by some controls because they are not considered input key presses. For example, by default, a Button control ignores the arrow keys. Pressing the arrow keys typically causes the focus to move to the previous or next control. The arrow keys are considered navigation keys and pressing these keys typically do not raise the KeyDown event for a Button. However, pressing the arrow keys for a Button does raise the PreviewKeyDown event.
    فکرکنم خیلی از تناقض ها حل شد
    بازم اینکه چرا این جوری کردن رو هنوز نفهمیدم؟

  4. #4
    کاربر دائمی آواتار abbas.oveissi
    تاریخ عضویت
    دی 1389
    محل زندگی
    تهران
    پست
    578

    نقل قول: تفاوت رویداد های کنترل دکمه در 4 رویداد PreviewKeyDown و KeyPress و KeyDown و KeyUp

    خب احتمالا برای این بوده سرعت اجرای برنامه هارو بالا ببرن.بالاخره هرجی تعداد رویدادها بیشتر باشه سرعت پایین میاد

تاپیک های مشابه

  1. پاسخ: 2
    آخرین پست: جمعه 13 مرداد 1391, 15:36 عصر
  2. پاسخ: 0
    آخرین پست: چهارشنبه 19 مرداد 1390, 22:07 عصر
  3. پاسخ: 6
    آخرین پست: سه شنبه 21 تیر 1390, 16:53 عصر
  4. پاسخ: 3
    آخرین پست: سه شنبه 27 اردیبهشت 1390, 18:11 عصر
  5. رویداد مربوط به دکمه های تابع Input Box
    نوشته شده توسط ehsan-ets در بخش برنامه نویسی در 6 VB
    پاسخ: 6
    آخرین پست: سه شنبه 21 مرداد 1382, 13:33 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •