- Элементы управления
- Кнопка
- Оформление кнопки
- Изображение на кнопке
- Клавиши быстрого доступа
- Кнопки по умолчанию
- Создание горячих клавиш в C#
- 3 ответа 3
- Visual Studio hotkeys
- Схемы разработки
- Комментирование.
- Поиск
- Вызов базового джина
- Навигация по коду
- Форматирование и редактирование
- Небольшой экскурс в сборку и отладку
- Привязка сочетаний клавиш к пунктам меню Bind keyboard shortcuts to menu items
- Выбор сочетания клавиш Choose a key combination
- Проверка доступности сочетания клавиш To verify the availability of a keyboard shortcut
- Назначение сочетания клавиш команде To assign a keyboard shortcut to a command
- Пример 1 Example 1
- Пример 2 Example 2
Элементы управления
Элементы управления представляют собой визуальные классы, которые получают введенные пользователем данные и могут инициировать различные события. Все элементы управления наследуются от класса 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 , которое управляет позиционированием изображения на кнопке:
Нам доступны 9 вариантов, с помощью которых мы можем прикрепить изображение к определенной стороне кнопки. Оставим здесь значение по умолчанию — MiddleCenter , то есть позиционирование по центру.
Затем перейдем к свойству TextImageRelation и установим для него значение ImageBeforeText . В итоге мы получим кнопку, где сразу после изображения идет надпись на кнопке:
Клавиши быстрого доступа
При работе с формами при использовании клавиатуры очень удобно пользоваться клавишами быстрого доступа. При нажатии на клавиатуре комбинации клавиш At+некоторый символ, будет вызываться определенная кнопка. Например, зададим для некоторой кнопки свойство Text равное &Аватар . Первый знак — амперсанд — определяет ту букву, которая будет подчеркнута. В данном случае надпись будет выглядеть как А ватар. И теперь чтобы вызвать событие Click, нам достаточно нажать на комбинацию клавиш Alt+А.
Кнопки по умолчанию
Форма, на которой размещаются все элементы управления, имеет свойства, позволяющие назначать кнопку по умолчанию и кнопку отмены.
Так, свойство формы AcceptButton позволяет назначать кнопку по умолчанию, которая будет срабатывать по нажатию на клавишу Enter.
Аналогично работает свойство формы CancelButton , которое назначает кнопку отмены. Назначив такую кнопку, мы можем вызвать ее нажатие, нажав на клавишу Esc.
Создание горячих клавиш в C#
Доброго времени суток, Хэшкод.
Пытаюсь написать для desktop-приложения горячие клавиши.
Делаю так: свойство
Это вроде должно позволить перехватывать события, связанные с клавишами.
Дальше создаю свой метод, например на KeyDown, проверяю с помощью пошаговой отладки и вижу, что в этот метод просто нет захода. Приложение никак не реагирует на нажатые клавиши. Пробовал делать методы на остальные события KeyX, все то же самое, нет захода в метод.
В чем может быть проблема?
Добавлено.
На пустом проекте это работает. Осталось понять, что мешает работать тут. На форме есть:
- UserControl
- XAML-евский ElementHost
- Меню типа MenuStrip
- Задан таймер, который при запуске программы выключен.
Больше у меня мыслей нет.
3 ответа 3
Сделать обработчик события
Мда. Решил свой вопрос, конечно. Но через известное место.
Как оказалось, события формы KeyUp/Down/Press и прочая не срабатывают, т.к. весь экран занят двумя XAML-евскими elementHost-ами и прочими свистелками. Я сделал так(просьба не смеяться 🙂 ):
Ввел таймер, который с частотой в 0,1 секунду проверяет нажата ли какая кнопка. Например так:
Но, ИМХО, это жесть. Может кто предложить лучший вариант?
Потому что сейчас сочетание всего одно. Но их будет около 20 штук(вероятно заменю там if на switch-case) и один генерал Файлюра знает, потянет ли таймер все эти проверки с такой частотой.
Бугага, все гениальное просто. Это все было неправильно.
Надо было мне уточнить, что Hotkeys нужно конкретно дя MenuStrip.
А там есть такая вещь, как ShortCutKeys. Всего-то надо использовать их.
Visual Studio hotkeys
Привет, хаброразработчик!
Нет, это не очередной конкурс спали клавиатуру А и получи клавиатуру Г. Сегодня мы поговорим о горячих клавишах в Visual Studio 2008.
Многие из нас пользуются всевозможными плагинами, расширениями для Visual Studio. Стоит заметить что многие из них довольно удобны. А вкупе с code snippets значительно ускоряют работу. Про плагины можно почитать здесь и здесь, про code snippets здесь. Тем кто ещё не знаком с такими «плюшками» настоятельно порекомендую попробовать и использовать.
Что касается меня, я пользовался Visual Assist, позже попытался использовать R#. Но если от первого я отказался когда перестал программировать на С++, то второй «убивал» напрочь мой компьютер, если я пытался открыть больше 2х студий. Не смотря на то, что сейчас и компьютер помощнее и R# несомненно улучшили, я не использую его. Связано это с тем, что я нашёл тогда возможность «вздохнуть» более свободно, используя «горячие клавиши».
Здесь я опишу тех хоткеи, которые использую и считаю удобными и необходимыми для запоминания.
Схемы разработки
Прежде всего, хочу обратить ваше внимание что в Visual Studio есть несколько схем для разработчиков, переключить которые вы можете через меню, как показано ниже:
Так же в этом меню, вы можете добавить или удалить хоткеи «заточив» ещё больше под себя. Настройка довольно проста.
Описанные примеры я буду рассматривать для схемы Visual C# 2005.
Комментирование.
Есть несколько комбинаций клавиш, для создания комментирования:
Ctrl+E,C — закоментировать выбранные линии в коде.
Ctrl+E,U — раскомментировать выбранные линии в коде.
Если перед имененм метода набрать /// — автоматически будут добавлены XML комментарии, которые потом можно использовать для создания документации.
Поиск
Кто-то пользуется поиском для рефакторинга, кто-то для ознакомления со своим же кодом, жизнь можно улучшить довольно легко:
Ctrl+F — открывается стандартное окно поиска, если в буфер недавно было скопирован текст, то он автоматически подставиться.
Ctrl+F3 — поиск «активного» текста вниз (который выделен или слово на котором стоит курсор), без копирования в буфер обмена.
Ctrl+Shift+F3 — поиск «активного» текста вверх.
Ctrl+I — и начинаете печатать текст, этакий runtime поиск.
Вызов базового джина
Вам лень писать текст полностью?! Скорость выпадающего Intellisence не устраивает несущуюся впереди вас вашу мысль?!
Тогда самое время применить следующии комбинации:
Ctrl+Space — вызов Intellisence с показом «слов»
Ctrl+J — если вы подзабыли название метода класса или его свойсто, то эта комбинация вам поможет. Можно применять и предыдущую, но эта более «умная».
Ctrl+K, X — показ всех сниппетов, которые у вас есть, в виде выпадающего списка, использование интуитивно понятно 🙂
короткое_имя_снипета+Tab — использовать сниппет в коде. Список базовых сниппетов можно посмотреть здесь. Себе я сделал немного урезанный вариант и повесил рядом с монитором.
Навигация по коду
Тут стоит сказать отдельно и довольно много, навигация очень удобная, особенно когда привыкаешь 🙂
F12 — перейти к определению/объявлению класса/метода/свойства. Очень применимо если вам вдруг стало интересно, а реализуется ли этой переменной, этого класса тип интерфейс IDisposable; или вы ищите в коде, «а где же объявляется эта переменная».
Ctrl+G — перейти на определённый номер строки в коде. (Отображение номеров строк можно включить: Text Editor -> Интересующий вас язык -> Display -> Line numbers — выставить галку). Иногда довольно удобно, особенно если получаете описание необработанного исключения, а там указан, как правило, номер строки.
Ctrl+] — когда курсор установлен на скобку, многострочный комментарий (/* */), регион (#region), строку, обрамлённую кавычками, эта комбинация позволит вам увидеть начало и окончание этих «блоков», перемещая курсор между ними.
Ctrl+M, M — я человек довольно ленивый и мне сложно заставить долго тыкать мышкой по ±, сворачиваю и разворачия «блоки», поэтому рекомендую данную комбинацию
Ctr+M, O — комбинация аналогичная предыдущей, только сворачивает все блоки
Ctrl+- — переход к предыдущему активному тексту (тому который вы редактировали)
Ctrl+Shift+- — переход к следующему активному тексту, если он конечно есть 😉
Если обратите внимание то студия, по своей природе 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.
PS: если кому-то оказалось «мало», то можно получить информацию в блоге Сары Форд, те кто не очень дружит с английским, есть возможность почитать переводы, которые появляются очень регулярно.
Привязка сочетаний клавиш к пунктам меню Bind keyboard shortcuts to menu items
Чтобы привязать сочетание клавиш к команде пользовательского меню, просто добавьте запись в файл . vsct для пакета. To bind a keyboard shortcut to a custom menu command, just add an entry to the .vsct file for the package. В этом разделе объясняется, как сопоставить сочетание клавиш с пользовательской кнопкой, пунктом меню или командой панели инструментов, а также как применить сочетание клавиш в редакторе по умолчанию или ограничить его настраиваемым редактором. This topic explains how to map a keyboard shortcut to a custom button, menu item, or toolbar command, and how to apply the keyboard mapping in the default editor or limit it to a custom editor.
Сведения о назначении сочетаний клавиш для существующих элементов меню Visual Studio см. в разделе Обнаружение и настройкасочетаний клавиш. To assign keyboard shortcuts to existing Visual Studio menu items, see Identify and customize keyboard shortcuts.
Выбор сочетания клавиш Choose a key combination
Многие сочетания клавиш уже используются в Visual Studio. Many keyboard shortcuts are already used in Visual Studio. Не следует назначать один и тот же ярлык нескольким командам, поскольку дублирование привязок сложно обнаружить, а также может привести к непредсказуемым результатам. You should not assign the same shortcut to more than one command because duplicate bindings are hard to detect and may also cause unpredictable results. Поэтому рекомендуется проверять доступность ярлыка перед его назначением. Therefore, it is a good idea to verify the availability of a shortcut before you assign it.
Проверка доступности сочетания клавиш To verify the availability of a keyboard shortcut
В окне Сервис > Параметры > среды выберите Клавиатура. In the Tools > Options > Environment window, select Keyboard.
Убедитесь, что для параметра использовать новый ярлык в выбрано значение Global. Make sure that Use new shortcut in is set to Global.
В поле Ввод сочетаний клавиш введите сочетание клавиш, которое нужно использовать. In the Press shortcut keys box, type the keyboard shortcut that you want to use.
Если сочетание клавиш уже используется в Visual Studio, в диалоговом окне сочетание клавиш в настоящий момент будет отображаться команда, которая в данный момент вызывается. If the shortcut is already used in Visual Studio, the Shortcut currently used by box will show the command that the shortcut currently calls.
Попробуйте использовать разные сочетания ключей, пока не найдете тот, который не сопоставлен. Try different combinations of keys until you find one that is not mapped.
Сочетания клавиш, использующие ALT , могут открывать меню, а не выполнять команду напрямую. Keyboard shortcuts that use Alt may open a menu and not directly execute a command. Таким образом, сочетание клавиш, используемое в настоящий момент в поле, может быть пустым при вводе ярлыка, включающего ALT. Можно проверить, что ярлык не открывает меню, закрыв диалоговое окно Параметры и нажав клавиши. Therefore, the Shortcut currently used by box may be blank when you type a shortcut that includes Alt. You can verify that the shortcut does not open a menu by closing the Options dialog box and then pressing the keys.
В следующей процедуре предполагается наличие существующего пакета VSPackage с командой меню. The following procedure assumes that you have an existing VSPackage with a menu command. Если вам нужна помощь, ознакомьтесь со статьей Создание расширения с помощью команды меню. If you need help doing that, take a look at Create an extension with a menu command.
Назначение сочетания клавиш команде To assign a keyboard shortcut to a command
Откройте файл . vsct для пакета. Open the .vsct file for your package.
Создайте пустой раздел после, если он еще не существует. Create an empty section after the if it is not already present.
Дополнительные сведения о привязках ключей см. в разделе настраиваемое сочетание клавиш. For more information about key bindings, see Keybinding.
В разделе Создайте запись. In the section, create a entry.
Задайте guid атрибуты и id для тех элементов команды, которую требуется вызвать. Set the guid and id attributes to those of the command you want to invoke.
Присвойте mod1 атрибуту значение Control, ALT или SHIFT. Set the mod1 attribute to Control, Alt, or Shift.
Раздел сочетания клавиш должен выглядеть примерно так: The KeyBindings section should look something like this:
Если для сочетания клавиш требуется более двух ключей, задайте mod2 key2 атрибуты и. If your keyboard shortcut requires more than two keys, set the mod2 and key2 attributes.
В большинстве случаев SHIFT не следует использовать без второго модификатора, так как при нажатии на него наиболее буквенно-цифровой ключ вводится прописная буква или символ. In most situations, Shift should not be used without a second modifier because pressing it already causes most alphanumeric keys to type an uppercase letter or a symbol.
С помощью кодов виртуальных клавиш можно получить доступ к специальным ключам, которые не содержат связанных с ними символов, например, функциональных клавиш и клавиши Backspace . Virtual-key codes let you access special keys that do not have a character associated with them, for example, function keys and the Backspace key. Дополнительные сведения см. в разделе коды виртуальных клавиш. For more information, see Virtual-key codes.
Чтобы сделать команду доступной в редакторе Visual Studio, присвойте editor атрибуту значение guidVSStd97 . To make the command available in the Visual Studio editor, set the editor attribute to guidVSStd97 .
Чтобы команда стала доступной только в пользовательском редакторе, присвойте editor атрибуту имя пользовательского редактора, созданного Visual Studio Visual Studio шаблоном пакета при создании VSPackage, включающего пользовательский редактор. To make the command available only in a custom editor, set the editor attribute to the name of the custom editor that was generated by the Visual Studio Visual Studio Package Template when you created the VSPackage that includes the custom editor. Чтобы найти значение имени, просмотрите раздел для узла, name атрибут которого заканчивается на » editorfactory .» Это имя пользовательского редактора. To find the name value, look in the section for a node whose name attribute ends in » editorfactory .» This is the name of the custom editor.
Пример 1 Example 1
В этом примере сочетание клавиш CTRL + ALT + C привязывается к команде cmdidMyCommand в пакете с именем MyPackage . This example binds the keyboard shortcut Ctrl+Alt+C to a command named cmdidMyCommand in a package named MyPackage .
Пример 2 Example 2
В этом примере сочетание клавиш CTRL + B привязывается к команде cmdidBold в проекте с именем TestEditor . This example binds the keyboard shortcut Ctrl+B to a command named cmdidBold in a project named TestEditor . Команда доступна только в пользовательском редакторе, а не в других редакторах. The command is available only in the custom editor and not in other editors.