Feedback

C# - WPF Shortcut

Veröffentlicht von am 16.04.2010
(1 Bewertungen)
Mit dieser Klasse lässt sich auf einfache Art und Weise ein Shortcut auf einem WPF-Fenster festlegen.
GFU-Schulungen  [Anzeige]

Visual Studio Team Foundation Server 2017/2015 (TFS) - Komplett 

C# 2019/2017/2015 Grundlagen

Nach Abschluss des Kurses sind Ihnen die Datentypen und Klassenbibliotheken von C# bekannt. Außerdem sind Sie in der Lage, mit Variablen umzugehen und deren Typen zu konvertieren. Sie definieren Namespaces und setzen diese ein, Sie erstellen eigene Klassen  und bauen Trouble Shooting ein.

using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Input;

namespace Shortcut
{
    /// <summary>
    /// Erstellt einen neuen Shortcut
    /// </summary>
    public class Shortcut
    {
        #region variables
        private Window mWindow;
        private List<Key> mKeys = new List<Key>();
        private Action mAction;
        private List<Key> pressedKeys = new List<Key>();
        #endregion

        #region properties
        /// <summary>
        /// Fenster, auf dem Shortcut gedrückt werden soll.
        /// </summary>
        public Window Window
        {
            get { return mWindow; }
            set { mWindow = value; }
        }
        /// <summary>
        /// Tasten, die gedrückt werden müssen, damit Aktion ausgeführt wird.
        /// </summary>
        public List<Key> Keys
        {
            get { return mKeys; }
            set { mKeys = value; }
        }
        /// <summary>
        /// Aktion, die bei Drücken der Shortcut-Tasten ausgeführt werden soll.
        /// </summary>
        public Action Action
        {
            get { return mAction; }
            set { mAction = value; }
        }
        #endregion

        #region ctor
        /// <summary>
        /// Initialisiert ein neues Shortcut.
        /// </summary>
        /// <param name="keys">Shortcuttasten, die Aktion auslösen.</param>
        /// <param name="action">Aktion, die ausgelöst werden soll.</param>
        public Shortcut(Window window, List<Key> keys, Action action)
        {
            this.Window = window;
            this.Window.KeyDown += new KeyEventHandler(Window_KeyDown);
            this.Window.KeyUp += new KeyEventHandler(Window_KeyUp);
            this.Keys = keys;
            this.Action = action;
        }
        #endregion

        #region events
        /// <summary>
        /// Wird ausgelöst, wenn auf dem Zielfenster eine Taste gedrückt wird.
        /// </summary>
        private void Window_KeyDown(object sender, KeyEventArgs e)
        {
            if (!this.pressedKeys.Contains(e.Key))
                this.pressedKeys.Add(e.Key);

            int counter = 0;

            foreach (Key key in this.Keys)
            {
                if (this.pressedKeys.Contains(key))
                    counter++;
            }

            if (this.Keys.Count > 0 && counter == this.Keys.Count)
            {
                this.Action();
                this.pressedKeys.Clear();
            }
        }
        /// <summary>
        /// Wird ausgelöst, wenn auf dem Zielfenster eine Taste losgelassen wird.
        /// </summary>
        private void Window_KeyUp(object sender, KeyEventArgs e)
        {
            this.pressedKeys.Remove(e.Key);
        }
        #endregion
    }
}

Abgelegt unter wpf, shortcut, tastenkuerzel.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!