Feedback

C# - Key Enumeration erweitern

Veröffentlicht von am 25.04.2015
(0 Bewertungen)
Die in WPF weit verbreitete Key-Enumeration wird unter anderem in den KeyUp/KeyDown-Events verwendet. Dieses Snippet bietet einige Erweiterungen um einfach heraus zu finden was für eine Taste gedrückt wurde.

Ähnliches lässt sich natürlich auch für Windows Forms und andere Plattformen implementieren.
namespace System.Windows.Input
{
    /// <summary>
    /// Stellt Erweiterungsmethoden für den <see cref="System.Windows.Input.Key"/>-Typ bereit.
    /// </summary>
    public static class KeyExtensions
    {
        /// <summary>
        /// Bestimmt ob der Wert der <see cref="System.Windows.Input.Key"/> Enumeration eine Zifferntaste (D0 bis D9) ist.
        /// </summary>
        /// <param name="key">Der zu untersuchende Wert.</param>
        /// <returns><c>true</c>, wenn <paramref name="key"/> eine Zifferntaste ist; andernfalls <c>false</c>,</returns>
        public static bool IsNumberKey(this Key key)
        {
            return key >= Key.D0 && key <= Key.D9;
        }
        /// <summary>
        /// Bestimmt ob der Wert der <see cref="System.Windows.Input.Key"/> Enumeration eine Zifferntaste auf dem Nummerblock ist (NumPad0 bis NumPad9) ist.
        /// </summary>
        /// <param name="key">Der zu untersuchende Wert.</param>
        /// <returns><c>true</c>, wenn <paramref name="key"/> eine Zifferntaste auf dem Nummernblock ist; andernfalls <c>false</c>,</returns>
        public static bool IsNumberPadNumberKey(this Key key)
        {
            return key >= Key.NumPad0 && key <= Key.NumPad9;
        }
        /// <summary>
        /// Bestimmt ob der Wert der <see cref="System.Windows.Input.Key"/> Enumeration eine Buchstabentaste des lateinihscen Alphabets (A bis Z) ist.
        /// </summary>
        /// <param name="key">Der zu untersuchende Wert.</param>
        /// <returns><c>true</c>, wenn <paramref name="key"/> eine Buchstabentaste ist; andernfalls <c>false</c>,</returns>
        public static bool IsLatinLetterKey(this Key key)
        {
            return key >= Key.A && key <= Key.Z;
        }
        /// <summary>
        /// Bestimmt ob der Wert der <see cref="System.Windows.Input.Key"/> Enumeration eine Taste zum steuern des Cursors in einem Eingabefeld ist.
        /// </summary>
        /// <param name="key">Der zu untersuchende Wert.</param>
        /// <returns><c>true</c>, wenn <paramref name="key"/> eine Cursor-Steuertaste ist; andernfalls <c>false</c>,</returns>
        public static bool IsTextCursorControllerKey(this Key key)
        {
            return key == Key.Left || key == Key.Up || key == Key.Right || key == Key.Down
                || key == Key.End || key == Key.Prior || key == Key.Next;
        }
        /// <summary>
        /// Bestimmt ob der Wert der <see cref="System.Windows.Input.Key"/> Enumeration die Löschen-, Entfernen- oder Einfügentaste ist.
        /// </summary>
        /// <param name="key">Der zu untersuchende Wert.</param>
        /// <returns><c>true</c>, wenn <paramref name="key"/> die Löschen-, Entfernen- oder Einfügentaste ist; andernfalls <c>false</c>,</returns>
        public static bool IsTextContentControllerKey(this Key key)
        {
            return key == Key.Insert
                || key == Key.Delete || key == Key.Back;
        }
        /// <summary>
        /// Bestimmt ob der Wert der <see cref="System.Windows.Input.Key"/> Enumeration eine der Funktionstasten (F1 bis F24) ist.
        /// </summary>
        /// <param name="key">Der zu untersuchende Wert.</param>
        /// <returns><c>true</c>, wenn <paramref name="key"/> eine eine Funktionstaste ist; andernfalls <c>false</c>,</returns>
        public static bool IsFunctionKey(this Key key)
        {
            return key >= Key.F1 && key <= Key.F24;
        }
        /// <summary>
        /// Bestimmt ob der Wert der <see cref="System.Windows.Input.Key"/> Enumeration eine taste zum Steuern der Medienwiedergabe ist.
        /// </summary>
        /// <param name="key">Der zu untersuchende Wert.</param>
        /// <returns><c>true</c>, wenn <paramref name="key"/> eine Taste zur Steuerung der Medienwiedergabe ist; andernfalls <c>false</c>,</returns>
        public static bool IsMediaKey(this Key key)
        {
            return key == Key.MediaNextTrack
                || key == Key.MediaPlayPause
                || key == Key.MediaPreviousTrack
                || key == Key.MediaStop
                || key == Key.SelectMedia;
        }
    }
}
Abgelegt unter Key, KeyDown, KeyUp.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!