تبدیل نمودن عملکرد کلیدهای Enter و Escape به عملکرد Tab و Shift-Tab
  در این مقاله به تشریح یک ترفند می پردازم. جهت سهولت کاربر در فرم های ویندوزی معمولا اجازه می دهیم که کاربر با استفاده از کلید Tab بین کنترل های فرم پیمایش نموده و با استفاده از Shift-Tab عمل عکس آن را انجام دهد....
   VB
   ۲۳۸۲۰
   دانلود
   مرتضی صحراگرد
   ۱۳۸۶/۴/۱۵
ارسال لینک صفحه برای دوستان ارسال لینک صفحه برای دوستان  اضافه کردن به علاقه مندیها اضافه کردن به علاقه مندیها   نسخه قابل چاپ نسخه قابل چاپ

 

در اين مقاله به تشريح يک ترفند مي پردازم. جهت سهولت کاربر در فرم هاي ويندوزي معمولا اجازه مي دهيم که کاربر با استفاده از کليد Tab بين کنترل هاي فرم پيمايش نموده و با استفاده از Shift-Tab عمل عکس آن را انجام دهد. جهت سهولت بيشتر کاربران مي توانيم اجازه انجام اين کار را با فشردن کليدهاي  Enter و Escape را نيز بدهيم.

يکي از راه هاي انجام اين کار اين است که در رويداد KeyDown مربوط به هر يک از کنترل هاي فرم بررسي کنيم که اگر کليد Enter فشرده شده است بر کنترل بعدي Focus کند و اگر کليد Escape فشرده شده بود بر کنترل قبلي Focus کند.

از جمله مشکلات اين روش اين است که اولا اگر فرم ما داراي کنترل هاي  زيادي باشد نياز به کدنويسي براي هر کنترل دارد که عمل زمانگيري است و ثانيا اگر در نحوه چينش کنترل ها تغييري پيش بيايد و يا تعداد کنترل ها کم و يا زياد شود معمولا نياز به تغيير نسبتا زيادي در کدهاي فرم داريم.

در اينجا با روش بسيار ساده و جالبي اين کار را انجام خواهيم داد. اين عمل با استفاده از Override نمودن تابع ProcessDialogKey انجام مي شود.

به قطعه کد زير توجه نماييد.


Protected Overrides Function ProcessDialogKey (ByVal keyData As System.Windows.Forms.Keys) As Boolean
If keyData = Keys.Enter Then
Return MyBase.ProcessDialogKey(Keys.Tab)
ElseIf keyData = Keys.Escape Then
Return MyBase.ProcessDialogKey(Keys.Shift Or Keys.Tab)
End If
Return MyBase.ProcessDialogKey(keyData)
End Function

همانگونه که مشاهده مي نماييد در صورتي که کليدهاي Enter يا Escape فشرده شود، فرمان Enter تبديل به Tab شده و Escape تبديل به Shift-Tab مي شود.

مثال کاربردي اين مقاله از لينک بالاي مقاله قابل دانلود مي باشد.