Example #1
0
        public static string FormatShortcut(Keys key)
        {
            Keys          modifiers = key & Keys.Modifiers;
            StringBuilder b         = new StringBuilder();

            if ((modifiers & Keys.Control) != Keys.None)
            {
                b.Append("Ctrl");
            }
            if ((modifiers & Keys.Shift) != Keys.None)
            {
                if (b.Length > 0)
                {
                    b.Append('+');
                }
                b.Append("Shift");
            }
            if ((modifiers & Keys.Alt) != Keys.None)
            {
                if (b.Length > 0)
                {
                    b.Append('+');
                }
                b.Append("Alt");
            }
            if (b.Length > 0)
            {
                b.Append('+');
            }

            b.Append(WinFormsUtil.KeyString(key & Keys.KeyCode));
            return(b.ToString());
        }
Example #2
0
        private string FormatKey(Keys key)
        {
            Keys body      = key & Keys.KeyCode;
            Keys modifiers = key & Keys.Modifiers;

            //modifierは常に表示する
            StringBuilder b = new StringBuilder();

            if ((modifiers & Keys.Control) != Keys.None)
            {
                b.Append("Ctrl");
            }
            if ((modifiers & Keys.Shift) != Keys.None)
            {
                if (b.Length > 0)
                {
                    b.Append('+');
                }
                b.Append("Shift");
            }
            if ((modifiers & Keys.Alt) != Keys.None)
            {
                if (b.Length > 0)
                {
                    b.Append('+');
                }
                b.Append("Alt");
            }
            if (b.Length > 0)
            {
                b.Append('+');
            }

            //この条件付けやや恣意的

            if (IsCharKey(body))
            {
                if (modifiers != Keys.None && modifiers != Keys.Shift)
                {
                    if (modifiers == Keys.Alt && (Keys.D0 <= body && body <= Keys.D9))
                    {
                        _key = Keys.None;
                    }
                    else
                    {
                        b.Append(WinFormsUtil.KeyString(body));
                        _key = key;
                    }
                }
                else
                {
                    _key = Keys.None;
                }
            }
            else if (IsTerminalKey(body))
            {
                if (modifiers != Keys.None)
                {
                    //カスタマイズ不能で固定されたショートカットキーは登録できない
                    if (modifiers == Keys.Control && IsScrollKey(body))
                    {
                        _key = Keys.None;
                    }
                    else
                    {
                        b.Append(WinFormsUtil.KeyString(body));
                        _key = key;
                    }
                }
                else
                {
                    _key = Keys.None;
                }
            }
            else if (IsFunctionKey(body))
            {
                b.Append(WinFormsUtil.KeyString(body));
                _key = key;
            }
            else if (!IsModifierKey(body))
            {
                _key = Keys.None;
            }

            return(b.ToString());
        }