2011-01-07 2 views
8

Я хотел бы создать быстрые клавиши для некоторых элементов управления в приложении Windows Forms.Как создать ярлыки Alt в приложении Windows Forms?

Пример:

Screenshot of XYZ

Примечание подчеркнутый, F E V P Б.

У меня есть этикетка и элемент управления TextBox. Я хотел бы связать это сочетание клавиш ярлыка с ярлыком и текстовым полем Alt. Поэтому, если кто-то нажимает Alt + B, фокус присваивается соответствующему текстовому полю. Есть ли способ создать эту ассоциацию?

ответ

11

Когда этикетка получает фокус от нажатия клавиши ускорителя (устанавливается с помощью &), она направляет фокус на следующий элемент управления в порядке табуляции, так как метки не редактируются. Вам нужно, чтобы текстовое поле было следующим элементом управления в порядке вкладок.

Чтобы просмотреть и исправить порядок вкладок в вашей форме, используйте команду Order + Tab Order в среде IDE. Использование TabPages или других контейнеров добавляет уровень вложенности в порядок вкладок (например, 1.1, 1.2 вместо 1 и 2), но если ярлык и текстовое поле находятся в одном контейнере, его не должно быть слишком сложно установить должным образом.

5

Тип &File или &Edit и вы получите подчеркивание. Это автоматически свяжет подчеркнутые буквы с ключевым словом Alt для ярлыка.

EDIT. Вы задали вопрос, поэтому я хотел бы идти в ногу с моим ответом. Вы хотели бы поймать комбинацию клавиш (Alt + F) и установить фокус на текстовое поле.

Вы можете попробовать это решение с помощью события KeyDown в основной форме.

private void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.Alt && e.KeyCode == Keys.F) 
     { 
      this.textBox1.Focus(); 
     } 
    } 

Для достижения этой цели, вы должны дополнительно установить KeyPreview свойство формы для true.

+0

Это не работает. Я использую элемент управления TabPage, и я хочу, чтобы F был выделен в «Шрифт». Изменение свойства .Text объекта tagPage1 не подчеркивает его. –

+0

Ну, изображение, которое вы предоставили, показывает полосу меню. Вы хотите, чтобы tabPage с именем Font (с подчеркнутым F), и после нажатия 'Alt + F' вы хотите отобразить tabPage. Я прав? – nan

+0

Да, кажется, амперсанд не работает на вкладках. –

0
this.KeyDown += new KeyEventHandler(Form1_KeyDown); 

void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
if (e.Alt && e.KeyCode == Keys.W) 
{ 
    btnShowConstructionCdFun(); 
} 
} 
Смежные вопросы