Горячие клавиши windows forms

Обновлено: 06.07.2024

Я хочу создать компонент, который позволяет нам создавать сложные сочетания клавиш, связанные с произвольной командой, например Visual Studio IDE и Microsoft Office.

В ответ на вопрос о аккордах клавиатуры, я не думаю, что на данный момент есть готовый вариант.

Однако он должен быть достаточно прост, чтобы моделировать. Я бы создал один класс, возможно, KeyboardChordProvider . Он должен будет знать о событиях клавиатуры на уровне формы. Как указано в другом месте, свойство Form.KeyPreview должно быть true . Для этого провайдера может быть достаточно подписаться на событие Form.KeyPress . Вы можете сделать все это в конструкторе поставщика, если вы передали форму.

Вам нужно будет зарегистрировать потенциальные нажатия клавиш у поставщика.

Внутри этого экземпляра будет отслеживаться текущее состояние. Всякий раз, когда наблюдается нажатие клавиши, которое представляет первый ключ аккорда, вы должны обновить состояние поставщика и поднять событие, чтобы абонент мог установить текст: (CTRL + W) было нажато. Ожидание второго ключа аккорда.

Если следующее нажатие клавиши совпадает с потенциальной вторичной опцией, тогда вы получите совпадение и можете поднять событие ChordPressed , содержащее данные о введенных штрихах. В качестве альтернативы вы можете просто вызвать конкретный обратный вызов, который был предоставлен провайдеру во время регистрации аккорда (чтобы избежать использования оператора switch или какой-либо другой отправки в обработчике событий ChordPressed ).

Если в любое время нажатие клавиши не соответствует потенциальной следующей опции, вы бы reset состояние поставщика.

Внутри провайдера вы можете моделировать возможные нажатия клавиш с использованием древовидной структуры. Текущее состояние поставщика - это просто дерево node. В начале будет активен корень node. Если ребенок соответствует нажатию клавиши, тогда он будет текущим node в ожидании следующего такта. Если дочерний элемент был листом node, то весь аккорд совпал, и вы поднимете событие ChordPressed (передавая цепочку штрихов, которые доставили вас к этой точке), или вызовите обратный вызов, сохраненный в листе. Всякий раз, когда никакое нажатие клавиши не соответствует ребенку, reset назад, чтобы сделать корень node активным.


Кнопки акселераторы(горячие клавиши)
Доброе время суток! Есть такой вопрос, возможно ли сделать кнопки акселераторы для элементов.

Как присваивать горячие клавиши к примеру на выполнение нажатие клавиши
Народ. не могу найти, как в студии присваивать горячие клавиши к примеру на выполнение нажатие.

Горячие клавиши
Добрый день. Появилась необходимость добавить в приложение горячие клавиши, но не простые, а.

Горячие клавиши
Как использовать горячие клавиши? К примеру я нажал на shift и выполнилось действие f1.enable =.

В чем работаешь? Если в VS, то в каждом элементе toolStripMenuItem в его свойствах найти пункт ShortcutKeys. В нем выставить нужную комбинацию.
PS: Если я все правильно понял. вообще то верно. продублировать реакцию кнопки в меню. И назначить комбинацию менюшке. Если нужно перехватывать когда программа не активна, то есть на форуме пример, как это сделать мм.. а как назначить сочетание клавиш на кнопку button?

Решение

Сработало! Спасибо)
мм.. а как обозначаются стрелки: вверх, вниз, вправо и влево? А как сделать горячие клавиши на кнопку, если у нее событие не клик, а MouseDown и MouseUp? Кто-нить помогите а то не получается, может есть какой- нибудь PerformKey? А как сделать горячие клавиши на кнопку, если у нее событие не клик, а MouseDown и MouseUp? А как такой вариант: вынести все что находится в функции MouseDown \ MouseUp в отдельный метод (т.е. MouseDown просто вызывает эту функцию), а вместо button1.PerformClick() писать MyMethod(button1) ? Ну просто вручную вызвать то на что он подписан, если это возможно

Прошу прощения, а кнопку Ctrl можно забиндить? Студия ругается, когда сам пишу Keys.Ctrl.
____________________________________________________________ _______

Стыд и срам. e.Control

Добавлено через 38 минут
Всё нашёл, нужно было

Горячие клавиши
Есть форма. На ней 2 панели. Одна для браузера, другая под кнопки. Если сделать так: private.

Глобальные горячие клавиши
Я использую в своей программе горячие клавиши, и появилась потребность сделать их глобальными, что.

Сделать изменяемые горячие клавиши
Доброго времени суток) Помогите пожалуйста сделать изменяемые горячие клавиши, то есть.

Не работают горячие клавиши в textbox
e.KeyChar = char.ToUpper(e.KeyChar); if (alph.IndexOf(e.KeyChar) >= 0) // символы.

Горячие клавиши в приложении не работают
Здравствуйте. Пишу менюшку для программы, но не получается забить на хоткеи действия. ЧЯДНТ.

Горячие клавиши и multiline в textBox
Привет. У меня есть textBox, и в нем я хочу прописать некое событие, которое бы происходило по.

Я хотел бы установить горячие клавиши в моей форме Windows Forms. Например, Ctrl + N для новой формы и Ctrl + S для сохранения. Как мне это сделать?

Создайте обработчик для события KeyDown:

О, ты прав. Я забыл установить свойство KeyPreview , которое необходимо для этого случая. +1.

Если в вашем окне есть меню, вы можете использовать свойство ShortcutKeys System.Windows.Forms.ToolStripMenuItem :

В Visual Studio вы также можете установить его на странице свойств элемента меню.

Вы также можете переопределить ProcessCmdKey в производном типе Form следующим образом:

Я считаю, что он больше подходит для горячих клавиш. Нет KeyPreview .

Если вы пытаетесь связать их с элементами меню в своем приложении, вам не нужен какой-либо код. В элементе меню вы можете просто настроить свойство сочетания клавиш и запустить одно и то же событие, настроенное для вашего пункта меню.

Мне нужно событие KeyDown для формы и некоторый код:

Может кто-нибудь, пожалуйста, скажите мне, что это CreateNew ()? Это встроенная функция? @riya7887: riya7887: Это всего лишь пример. Это не встроенный метод. Вы можете создать такой метод и поместить весь связанный код в.

Я думал, что выложу обновление здесь, так как новейшему ответу 5 лет. Вы можете управлять свойствами вашего объекта MenuStrip.MenuItem , установив свойство ShortcutKeys . В Visual Studio вы можете сделать это в окне дизайна формы, открыв свойства вашего объекта MenuStrip . После прокрутки до свойства ShortcutKeys вы можете использовать интерфейс VS для установки горячих клавиш.

Изображение 138698

Если вы хотите, чтобы MenuStrip подчеркивал пункт меню, MenuStrip префикс амперсанда (&) к символу нужной горячей клавиши. Так, например, если вы хотите, чтобы "x" в Exit подчеркивался, значение свойства должно быть E&xit .

Изображение 138699

Изображение 138700

Эти манипуляции со свойствами должны давать результат, подобный следующему *:

* Примечание. Чтобы отобразить сочетание клавиш "Ctrl + N", измените свойство ShowShortcutKeys на true .

Сюда буду добавлять горячие клавиши в Visual Studio, способы быстрого ввода и прочие фишки, позволяющие кодить более комфортно.

Начнем с самого простого, что бывает нужно начинающему программисту:
cw + 2 раза Tab = Console.WriteLine();

Далее материалы статьи с Хабра, где-то с моими дополнениями, но в основном в чистом виде:

Комментирование

Ctrl+K,C — закомментировать выбранные линии в коде.
Ctrl+K,U — раскомментировать выбранные линии в коде.

Если перед именем метода набрать /// — автоматически будут добавлены XML комментарии, которые потом можно использовать для создания документации. Туда можно вписать название метода, описание переменных и т.п. Далее при использовании данного метода будут всплывать подсказки как раз с этой информацией.

Поиск

Ctrl+F — открывается стандартное окно поиска, если в буфер недавно было скопирован текст, то он автоматически подставиться.
Ctrl+F3 — поиск «активного» текста вниз (который выделен или слово на котором стоит курсор), без копирования в буфер обмена.
Ctrl+Shift+F3 — поиск «активного» текста вверх.
Ctrl+I — и начинаете печатать текст, этакий runtime поиск.

Вызов базового джина

Вам лень писать текст полностью?! Скорость выпадающего Intellisence не устраивает несущуюся впереди вас вашу мысль?!
Тогда самое время применить следующии комбинации:
Ctrl+Space — вызов Intellisence с показом «слов»
Ctrl+J — если вы подзабыли название метода класса или его свойсто, то эта комбинация вам поможет. Можно применять и предыдущую, но эта более «умная».
Ctrl+K, X — показ всех сниппетов, которые у вас есть, в виде выпадающего списка, использование интуитивно понятно 🙂
короткое_имя_снипета+Tab — использовать сниппет в коде.

Навигация по коду

Если обратите внимание то студия, по своей природе MDI, значит должна быть возможность перемещаться, между окнами:
Ctrl+Tab — аналог Alt+Tab в Windows, только применимо к студии.

Очень удобным инструментом в студии являются закладки, да-да, по аналогии с книжными. Можно отметить код чтобы потом перейти к нему:
Ctrl+B, T — поставить/снять закладку.
Ctrl+B, Ctrl+C — удалить все закладки.
Ctrl+B, N — перейти к следующей закладке.
Ctrl+B, P — перейти к предыдущей закладке.

Форматирование и редактирование

Многие знают и используют Ctrl+C и Ctrl+V, но студия обладает ещё рядом удобным комбинаций:
Ctrl+Shift+V — не отпуская Ctrl+Shift и нажимая на V, вы сможете вставить один из 10 последних кусков текста, скопированных в буфер обмена.
Tab — увеличить отступ.
Shift+Tab — уменьшить отступ.

Мне иногда не хватало вертикального выделения текста, бывает полезно. Оказывается и такая возможность есть! Стоит нажать Alt, и не отпуская, выделять мышкой текст. Но есть минус — меню и стрелочки клавиатуры :). Это решаемо, нажимаете Shift+Alt и используете стрелочки Left или Right

Если код доставшийся вам «грязен», не только по структуре, но и по внешнему оформлению, используйте:
Ctrl+E+D — форматирование всего документа, позволяет привести документ в более удобоваримый вид.
Ctrl+E+F — форматирование выбранной части текста

Иногда в целях рефакторинга или ещё каких-то благих начинаниях, есть смысл перевести все буквы в верхний или нижний регистр:
Ctrl+Shift+U — перевести выделенный блок в верхний регистр
Ctrl+U — перевести выделенный блок в нижний регистр

Небольшой экскурс в сборку и отладку

Конечно же со стороны хоткеев 🙂
Начнём со «сборки»:
Ctrl+Shift+B или F6 — собрать solution.
Shift+F6 — собрать активный проект.
Если честно, тут я немного пошаманил, заточив под себя, иногда бывает удобно пересобрать проект RebuildSolution, но почему-то хоткей для этого не предусмотрен, я поступил следующий образом:
F6 — собрать solution
Ctrl+Shift+B — пересобрать solution
Поступил я так из-за соображения, что иногда студия не выполняет пересборку проекта, а пишет «up-to-date», а мне нужно именно пересобрать.

Если появились ошибки, это плохо, но никто от них не застрахован:
F5 — запустить программу, с возможностью отладки. Или продолжить выполнение программы, после точки останова.
Ctrl+F5 — запустить программу без отладки
F9 — поставить/убрать точку останова — breakpoint
Ctrl+Shift+F9 — удалить все точки останова.
F10 — выполнить код, без захода внутрь
F11 — выполнить код, с заходом внутрь

В режиме отладки есть два типа просмотра — Watch и QuickWatch.
Вызвать QuickWatch вы можете нажав Ctrl+D, Q. Просто Watch — Ctrl+D, W.

Элементы управления представляют собой визуальные классы, которые получают введенные пользователем данные и могут инициировать различные события. Все элементы управления наследуются от класса Control и поэтому имеют ряд общих свойств:

Anchor : Определяет, как элемент будет растягиваться

BackColor : Определяет фоновый цвет элемента

BackgroundImage : Определяет фоновое изображение элемента

ContextMenu : Контекстное меню, которое открывается при нажатии на элемент правой кнопкой мыши. Задается с помощью элемента ContextMenu

Cursor : Представляет, как будет отображаться курсор мыши при наведении на элемент

Dock : Задает расположение элемента на форме

Enabled : Определяет, будет ли доступен элемент для использования. Если это свойство имеет значение False, то элемент блокируется.

Font : Устанавливает шрифт текста для элемента

ForeColor : Определяет цвет шрифта

Location : Определяет координаты верхнего левого угла элемента управления

Name : Имя элемента управления

Size : Определяет размер элемента

Width : ширина элемента

Height : высота элемента

TabIndex : Определяет порядок обхода элемента по нажатию на клавишу Tab

Tag : Позволяет сохранять значение, ассоциированное с этим элементом управления

Кнопка

Наиболее часто используемым элементом управления является кнопка. Обрабатывая событие нажатия кнопки, мы может производить те или иные действия.

При нажатии на кнопку на форме в редакторе Visual Studio мы по умолчанию попадаем в код обработчика события Click , который будет выполняться при нажатии:

Оформление кнопки

Чтобы управлять внешним отображением кнопки, можно использовать свойство FlatStyle. Оно может принимать следующие значения:

Flat - Кнопка имеет плоский вид

Popup - Кнопка приобретает объемный вид при наведении на нее указателя, в иных случаях она имеет плоский вид

Standard - Кнопка имеет объемный вид (используется по умолчанию)

System - Вид кнопки зависит от операционной системы

Изображение на кнопке

Как и для многих элементов управления, для кнопки можно задавать изображение с помощью свойства BackgroundImage. Однако мы можем также управлять размещением текста и изображения на кнопки. Для этого надо использовать свойство TextImageRelation . Оно приобретает следующие значения:

Overlay : текст накладывается на изображение

ImageAboveText : изображение располагается над текстом

TextAboveImage : текст располагается над изображением

ImageBeforeText : изображение располагается перед текстом

TextBeforeImage : текст располагается перед изображением

Например, установим для кнопки изображение. Для этого выберем кнопку и в окне Свойств нажмем на поле Image (не путать с BackgroundImage). Нам откроется диалоговое окно установи изображения:

Установка изображения для кнопки

В этом окне выберем опцию Local Resource и нажмем на кнопку Import , после чего нам откроется диалоговое окно для выбора файла изображения.

После выбора изображения мы можем установить свойство ImageAlign , которое управляет позиционированием изображения на кнопке:

ImageAlign

Нам доступны 9 вариантов, с помощью которых мы можем прикрепить изображение к определенной стороне кнопки. Оставим здесь значение по умолчанию - MiddleCenter , то есть позиционирование по центру.

Затем перейдем к свойству TextImageRelation и установим для него значение ImageBeforeText . В итоге мы получим кнопку, где сразу после изображения идет надпись на кнопке:

Кнопка с изображением в Windows Forms

Клавиши быстрого доступа

При работе с формами при использовании клавиатуры очень удобно пользоваться клавишами быстрого доступа. При нажатии на клавиатуре комбинации клавиш At+некоторый символ, будет вызываться определенная кнопка. Например, зададим для некоторой кнопки свойство Text равное &Аватар . Первый знак - амперсанд - определяет ту букву, которая будет подчеркнута. В данном случае надпись будет выглядеть как А ватар. И теперь чтобы вызвать событие Click, нам достаточно нажать на комбинацию клавиш Alt+А.

Кнопки по умолчанию

Форма, на которой размещаются все элементы управления, имеет свойства, позволяющие назначать кнопку по умолчанию и кнопку отмены.

Так, свойство формы AcceptButton позволяет назначать кнопку по умолчанию, которая будет срабатывать по нажатию на клавишу Enter.

Аналогично работает свойство формы CancelButton , которое назначает кнопку отмены. Назначив такую кнопку, мы можем вызвать ее нажатие, нажав на клавишу Esc.

Читайте также: