تبلیغات

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

کلیدهای ترکیبی، نقش مهمی در نرم‌افزارها و حتی بعضی از بازی‌های کامپیوتری دارند و یکی از کاربردهای آنها، تعیین کلیدهای میانبور برای برخی از وظایف نرم‌افزار می‌باشد. برای مثال، زمانی که Ctrl+S فشار داده شد، چیزی ذحیره شود!

برای مدیریت کلیدهای ترکیبی، راه‌های زیادی وجود دارد که در ادامه دو روش مختلف را معرفی می‌کنیم.

روش اول

 یکی از بهترین روش‌های پیاده‌سازی این قابلیت، Override کردن متد ProcessCmdKey فرم (Form) می‌باشد:

در اینجا با استفاده از یک | بیتی (اور بیتی)، تعیین کرده‌ایم که اگر Ctrl+F فشرده شد، پیامی را در MessageBox به کاربر نمایش داده و مقدار true را از متد برگرداند؛ این مقدار به سیستم می‌گوید که کلید مدیریت شده و در خارج از متد، دیگر تاثیی نداشته باشد (مثلا کلید Alt+F4 باعث بسته شدن فرم می‌شود که اگر true برگردد، مقدار پیشفرض آن دیگر از کار می‌افتد). و همچنین در اینجا مشخص کرده‌ایم اگر کلید ترکیبی Ctrl+F فشار داده نشده بود، متد اصلی فرم را از طریق base فراخوانی کند.

روش دوم

به جای استفاده از متد ProcessCmdKey، می‌توان از رویداد KeyDown فرم استفاده کرد:

در روش قبلی، با برگرداندن true و false مشخص کردیم که کلید مدیریت شده و دیگر پیشفرض آن اجرا نشود! اما در اینجا بایستی مقدار ویژگی Handled ورودی e را برابر true قرار دهیم که به صورت پیشفرض برابر false است.

تبلیغات
6 نظر
کانال تلگرام فول کده
تبلیغات

درباره نویسنده

هادی اکبرزاده

[ مدیر فول کده ]

علاقه‌مند به اشتراک گذاری اطلاعات در هر زمینه‌ای / برنامه‌نویس / مدیر فول کده

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

نظرات ثبت شده 6 دیدگاه

    1. محمد گفت:

      sبا سلام و خسته نباشید
      میخواستم بدونم اگر به عنوان مثال بخواهم کلید میانبر Ctrl + E + X رو تعریف کنیم چه کدی باید بنویسم.
      آخه از روش بالا که انجام دادم جواب نداد.
      ممنون میشوم اگه راهنمایی بفرمایید.

      1. سلام؛ از اینجور ترکیب بندی بایستی استفاده کنین
        کنترل + شیفت + حرف
        آلت + کنترل + حرف
        و …
        یعنی دوتای اولی بایستی کلیدهای کنترل، آلت و شیفت باشه

        1. محمد گفت:

          با سلام مجدد
          ولی خب اگه اینجوری هست که میفرمایید چرا توی یه نرم افزاری مثله ویژوال استودیو ، به عنوان مثال کلید ترکیبی Ctrl + K + D برای مرتب سازی کد ها وجود داره؟

          1. منظورم این نبود که نمیشه اینکارو انجام داد؛ بلکه این اشکال روش بالا در استفاده از متد ProcessCmdKey بود
            همچنین به این نکته توجه کنین که Ctrl + K + D همزمان فشار داده نمیشن! بلکه Ctrl نگه داشته میشه و سپس K و D به ترتیب فشرده و رها میشن
            اگه از رویداد KeyDown فرم به جای متد ProcessCmdKey استفاده کنیم، بازم همینطوره (به انتهای مطلب اضافه شد)
            درواقع کلیدهای Ctrl, Alt, Shift رو میشه به صورت فشرده شده با کلیدای دیگه بررسی کرد ولی کلیدهای دیگه رو نمیشه.

            برای اینکه شما بتونین با کلیدهای دیگه هم همانند Ctrl, Alt, Shift رفتار کنین، بایستی رویدادهای KeyDown و KeyUp رو در ترکیب با همدیگه استفاده کنین

    2. sajjad گفت:

      سلام خسته نباشید
      اگه بخوام که کلیدهای ترکیبی زیر رو درست کنم چیکار کنم؟
      F1 + 5
      کلی سرچ کردم ولی چیزی پیدا نکردم
      ممنون میشم کمک کنید

      1. سلام دوست من؛ این کلیدهارو نمیشه با دو روش بالا پیاده‌سازی کرد. تو کامنت قبلی هم به اون یکی دوستمون گفتم!
        باید با ترکیب دو رویداد KeyDown و KeyUp، این مورد رو حل کنین. (البته منطق شورتکات‌ها اینه که سه کلید کنترلی Ctrl و Alt و Shift با بقیه ترکیب شن نه کلیدای دیگه)
        در صورتی که موفق به انجامش نشدین اطلاع بدین تا مطلبی رو در این زمینه منتشر کنم.
        موفق باشین