2012-01-13 1 views
0

Я хочу добавить ярлык к флажку. Флажок не содержит текста. У меня есть ярлык, а затем флажок. Ярлык имеет ярлык для ex. & Видимый. Итак, Label имеет V в качестве клавиши быстрого доступа. Если кто-то нажал Alt + V, то chechbox должен измениться с выбранного на не выбранное состояние и таким же образом.Как добавить ярлык к флажку без текста

+1

Какие рамки вы используете: wpf, windows forms, gtk #, asp.net, ...? – madd0

+0

что вы пробовали для этого? –

+0

Окно формы рамки –

ответ

2

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

Предназначен для использования с текстовыми полями и comboboxes, которые не имеют встроенного средства для отображения метки (в отличие от флажка и кнопок управления кнопками). Чтобы настроить мнемонику для этих элементов управления, поместите метку рядом с ними, установите мнемонику для нее и убедитесь, что она появилась прямо перед текстовым полем в порядке вкладок. Таким образом, когда пользователь активирует мнемонику клавиатуры для метки, она автоматически устанавливает фокус на элемент управления текстовым полем. Вы видели это повсюду в Windows:

          example of textbox with a label used as the mnemonic

Ну, вы можете сделать то же самое с помощью элемента управления CheckBox, если необходимо (хотя я на самом деле не уверен, почему вы захотите). Установите мнемонику для метки (&Visible), а затем поместите метку рядом с флажком, с которым вы хотите работать. Use the TabIndex configuration options in the Visual Studio IDE, чтобы убедиться, что если метка имеет индекс табуляции n, элемент управления флажком имеет индекс вкладки n + 1.

Нет необходимости переопределять ProcessCmdKey или что-то еще сложное.

+0

Не работает для ToolStripLabels & ToolStripCheckboxes –

1

Вы можете проверить его как это, см. Следующую часть кода.

 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
     { 
      // look for the expected key 
      if (keyData == Keys.Alt && keyData == Keys.V) 
      { 
       checkBox1.Checked = true; 
       return true; 
      } 
      else 
      { 
       checkBox1.Checked = false; 
       return false; 
      } 
     }