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

نام تاپیک: keydown

  1. #1

    keydown

    سلام
    در بعضی از کنترلها مثل splitContainer وقتی در رویداد keydown کدی می نویسیم برای بعضی از کلید ها کار نمیکنه مثلا اگر کلید left را فشار بدیم این رویداد فرا خوانی نمیشه ولی اگه یکی از حروف مثلا a رو فشار بدیم وارد این رویداد میشه من می خوام بررسی کنم که اگه کلید left فشار داده شد یک عملی رو انجام بده ولی نمیشه میشه بگید من باید چیکار کنم

    در واقع برای 4 کلید جهت نما رویداد keydown فراخوانی نمیشه نه در این کنترل بلکه در بسیاری از موارد چرا و چیکار باید کرد؟

  2. #2
    کاربر دائمی آواتار dr_csharp
    تاریخ عضویت
    آبان 1386
    محل زندگی
    Tehran
    پست
    599
    یه راه حلش اینه که با استفاده از توابع API ویندوز کلید فشرده شده رو handle کنی ..

  3. #3
    Certain keys, such as the TAB, RETURN, ESCAPE, and arrow keys are handled by controls automatically. To have these keys raise the KeyDown event, you must override the IsInputKey method in each control on your form. The code for the override of the IsInputKey would need to determine if one of the special keys is pressed and return a value of true.

    این چیزی است که تو help خود vs نوشته ولی من متوجه نشدم کسی میتونه بگه IsInputKey چیه و من چه طور اونو override کنم تا بتونم کلید های جهت نما را در keydown تشخیص بدم

  4. #4
    بعضی از کلید ها از جمله Tab این مشکلی که شما اشاره کردید رو دارند .ما باید تابعIsInputKey رو override کنیم. کنترل هایی که در برنامه هامون استفاده میکنیم دارای این تابع میباشند. این تابع بررسی میکنه که آیا کلیدی که در فوکوس این کنترل زده شده یک کلید معمولی هستش یا این که یک کلیدی هست که نیاز به پردازش داره !
    در override کردن این تابع در واقع چه کاری انجام میدیم؟ با این کار می گوییم که این رویداد ها برای کلید های خاص قابل انجام شود ! همین!

    پس هر کنترلی رو که خواستیم رویداد KeyDown کلیدی چون Tab رو براش Firable! کنیم رو دوباره میسازیم به شکل زیر بنابر مثال خود MSDN :

    public class MyControl : System.Windows.Forms.FormControl
    {
    protected override bool IsInputKey (System.Windows.Forms.Keys keyData)
    {
    switch(keyData)
    {case Keys.Tab:
    return true;
    default:
    return base.IsInputKey(keyData);
    }
    }
    }

    در این مثال FormControl در واقع اون کنترلی هست که میخواهیم رویداد رو براش فعال کنیم.
    در قسمت switch هر کلیدی رو که خواستیم به عنوان کلید مورد نظر معرفی کنیم قرار میدیم که در اینجا کلید Tab قرار داده شده .

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

  1. یه مشکل با رویداد KeyDown
    نوشته شده توسط iman_s52 در بخش C#‎‎
    پاسخ: 5
    آخرین پست: پنج شنبه 05 مهر 1386, 11:35 صبح
  2. کلیدهای ترکیبی در keydown
    نوشته شده توسط masysh در بخش VB.NET
    پاسخ: 2
    آخرین پست: سه شنبه 26 اردیبهشت 1385, 17:14 عصر
  3. keydown در datagrid همیشه کار نمی کنه ؟
    نوشته شده توسط Milad در بخش VB.NET
    پاسخ: 7
    آخرین پست: چهارشنبه 16 آذر 1384, 12:47 عصر
  4. رویداد KeyDown
    نوشته شده توسط ILOVEVB در بخش برنامه نویسی در 6 VB
    پاسخ: 8
    آخرین پست: چهارشنبه 14 اردیبهشت 1384, 08:37 صبح
  5. KeyDown
    نوشته شده توسط BAHMAN_SH در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 2
    آخرین پست: پنج شنبه 05 شهریور 1383, 10:17 صبح

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

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