2013-11-16 3 views
0

У меня есть простой вопрос. В моей форме много кнопок. Около 40. Я хочу отключить фокус на кнопках со стрелками. TabIndex запрещает использование вкладки, но не стрелку. Все кнопки имеют TabIndex = 0, но я все еще могу использовать стрелки.Отключить кнопку фокусировки

+1

Довольно непонятно, почему вы хотите сделать так сложным для пользователя, чтобы он работал с вашим пользовательским интерфейсом. Переопределите ProcessCmdKey() и верните * true *, если вы видите клавишу курсора. –

+0

Отключить фокусировку на кнопках означает, что вы хотите переключить фокус с одной кнопки на другую, когда стрелки нажаты вправо? –

+0

Да, вы правы, Sudhakar –

ответ

1

Вы можете создать вам пользовательские кнопки и установить стиль выбираемый = ложь

public class CustomButton : Button 
{ 
    public CustomButton() 
    { 
    this.SetStyle(ControlStyles.Selectable, false); 
    } 
} 
0

Вы можете переопределить ProcessCmdKey() для обработки кнопки управления курсором

Пример кода:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
     { 
      if (keyData == Keys.Up) 
      { 
       button1.Focus(); 
       return true; 
      } 
      return base.ProcessCmdKey(ref msg, keyData); 
     } 

Примечание : если вы можете более четко объяснить свою проблему, мы можем помочь вам лучше.

+0

Пожалуйста, попробуйте код, который вы публикуете первым. Не нужно больше минуты или двух, чтобы обнаружить, что это вообще не работает. KeyPreview - это свойство совместимости VB6, предназначенное для реализации сочетаний клавиш на этом языке. Клавиши курсора никогда не являются ярлыками. –

+0

Спасибо, сэр за ваши ценные вкладки. я внес изменения в соответствии с вашим комментарием. Спасибо большое. –

Смежные вопросы