דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. קיצורי מקשים באפליקציית C# WPF

קיצורי מקשים באפליקציית C# WPF

מתוזמן נעוץ נעול הועבר תכנות
5 פוסטים 2 כותבים 223 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • pcinfogmachP מנותק
    pcinfogmachP מנותק
    pcinfogmach
    כתב ב נערך לאחרונה על ידי
    #1

    אשמח אם מישהו יכול להדריך אותי איך יוצרים קיצורי מקשים גלובליים באפליקצייה של wpf ב C#

    לדוגמא cntrl +o לפתיחת קובץ וכן הלאה

    תודה מראש

    גמ"ח מידע מחשבים ואופיס

    dovidD תגובה 1 תגובה אחרונה
    1
    • dovidD מחובר
      dovidD מחובר
      dovid ניהול
      השיב לpcinfogmach ב נערך לאחרונה על ידי
      #2

      @pcinfogmach

      קיצורי מקשים גלובליים

      השאלה היא מה זה גלובליים.
      אם גלובליים אתה מתכוון לא משנה באיזה חלון/פקד של האפליקציה שלך, אז אתה צריך לדאוג להירשם בכל Window לאירוע PreviewKeyDown.

      אם במילה גלובליים אתה מתכוון על כלל המחשב, ולא רק ברחבי האפלקיציה שלך, אתה צריך להירשם לhook של המערכת הפעלה, ראה את המאמר דלהלן https://learn.microsoft.com/en-us/archive/blogs/toub/low-level-keyboard-hook-in-c.

      נ.ב. כותרת מצויינת (למעט המילה C#, כי wpf זה תמיד .net וההבדל בין השפות מסתכם הקשקושים שGPT ימיר לך בשמחה).

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      pcinfogmachP תגובה 1 תגובה אחרונה
      5
      • pcinfogmachP מנותק
        pcinfogmachP מנותק
        pcinfogmach
        השיב לdovid ב נערך לאחרונה על ידי
        #3

        @dovid כתב בקיצורי מקשים באפליקציית C# WPF:

        אם גלובליים אתה מתכוון לא משנה באיזה חלון/פקד של האפליקציה שלך, אז אתה צריך לדאוג להירשם בכל Window לאירוע PreviewKeyDown.

        כוונתי הייתה לאפליקצייה שלי סליחה שלא פירטתי.

        בכל אופן previewkeydown לכאורה נותן לי את האופציה למקש אחד לא קובינציה של מקשים.
        זה מה שניסיתי

         private void UserControl_PreviewKeyDown(object sender, KeyEventArgs e)
         {
             if (Keyboard.Modifiers == ModifierKeys.Control && e.Key == Key.C)
             {
                 // Handle Ctrl + C here
                 MessageBox.Show("Ctrl + C pressed!");
             }
         }
        

        הוא קולט את הcntrl ולא את ה-c

        אגב: למה previewkeydown ולא keydown?

        גמ"ח מידע מחשבים ואופיס

        pcinfogmachP תגובה 1 תגובה אחרונה
        0
        • pcinfogmachP מנותק
          pcinfogmachP מנותק
          pcinfogmach
          השיב לpcinfogmach ב נערך לאחרונה על ידי pcinfogmach
          #4

          קלטתי את הטעות שלי ב'וד הקודם צריך להפוך את הסדר קודם לקלוט את המקש ואז את הmodifier
          ככה

           private void UserControl_PreviewKeyDown(object sender, KeyEventArgs e)
           {
               if (Key.C == e.Key && Keyboard.Modifiers == ModifierKeys.Control)
               {
                   e.Handled = true;
               }
           }
          

          ועוד משהו חשוב יש לעשות e.handeled כדי למנוע פעולה בלתי רצויה למשל בתוך textbox שיקליד לך גם את האות C

          אבל לא הצלחתי לעשות עם שלוש מקשים כמו:cntrl+shift+c

          גמ"ח מידע מחשבים ואופיס

          dovidD תגובה 1 תגובה אחרונה
          0
          • dovidD מחובר
            dovidD מחובר
            dovid ניהול
            השיב לpcinfogmach ב נערך לאחרונה על ידי dovid
            #5

            @pcinfogmach כתב בקיצורי מקשים באפליקציית C# WPF:

            קלטתי את הטעות שלי ב'וד הקודם צריך להפוך את הסדר קודם לקלוט את המקש ואז את הmodifier

            מה ההיגיון? אצלי שניהם עובדים.

            אבל לא הצלחתי לעשות עם שלוש מקשים כמו:cntrl+shift+c

            המאפיין Keyboard.Modifiers הוא מסוג ביט פלאג, שזה בעצם אומר שהוא יכול להכיל כמה כן/לא בבת אחת.
            בודקים את התוכן שלו על ידי פעולות על סיביות, תוכל לחפש על זה בפורום (המילה סיביות או bitwise), ככה:

            if (Keyboard.Modifiers == (ModifierKeys.Control | ModifierKeys.Shift) && e.Key == Key.C)
            

            אגב: למה previewkeydown ולא keydown?

            כדי לתפוס גם מה שאירועים אחרים מאזינים ומבצעים כבר e.Handled = true ואז אתה תפספס את האירוע.
            ככה אתה הראשון ואתה מחליט אם להעביר להם.

            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

            בכל נושא אפשר ליצור קשר dovid@tchumim.com

            תגובה 1 תגובה אחרונה
            4

            בא תתחבר לדף היומי!
            • התחברות

            • אין לך חשבון עדיין? הרשמה

            • התחברו או הירשמו כדי לחפש.
            • פוסט ראשון
              פוסט אחרון
            0
            • דף הבית
            • קטגוריות
            • פוסטים אחרונים
            • משתמשים
            • חיפוש
            • חוקי הפורום