بعضی از کلید ها از جمله 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 قرار داده شده .