2016-01-19 6 views
0

Я создаю форму редактора конфигураций и немного поражен, я много времени уделяю удобному и эффективному дизайну и поэтому хочу, чтобы TabIndex отлично работал, чтобы свести к минимуму использование мыши ,C# Checkbox не фокусируется на Tabstop

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

Как сделать фокус CheckBox усиления с помощью TabIndex и TabStop, так что я могу просто нажать Enter, чтобы изменить свое состояние с помощью события KeyUp.

Ниже приведено изображение моей формы, а рядом с ним изображение TabIndex, а также код, взятый непосредственно из класса Form.Designer.cs.

enter image description here

 // 
     // cbxDefaultPublic 
     // 
     this.cbxDefaultPublic.AutoSize = true; 
     this.cbxDefaultPublic.Location = new System.Drawing.Point(247, 12); 
     this.cbxDefaultPublic.Name = "cbxDefaultPublic"; 
     this.cbxDefaultPublic.Size = new System.Drawing.Size(15, 14); 
     this.cbxDefaultPublic.TabIndex = 1; 
     this.cbxDefaultPublic.TabStop = true; 
     this.cbxDefaultPublic.UseVisualStyleBackColor = true; 

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

+3

Нажмите 'SpaceBar', а не' Enter'. Я бы ожидал 'Enter', чтобы закрыть форму, а не переключать' CheckBox'. –

+2

Элемент управления CheckBox предпочитает иметь текст, чтобы показать фокус. – LarsTech

+0

@GrantWinney Хорошо, теперь я действительно смущен, в основном вызывают работу 'SpaceBar', но меня смущает то, что визуальные эффекты для' CheckBox' не меняются, когда они находятся в фокусе, например, как кнопки управления (fx Buttons) слегка поворачиваются синий, когда они получают фокус. –

ответ

0

С помощью людей, комментирующих мой вопрос, я смог найти правильный путь, что делать и что искать.
Спасибо Grant Winney, LarsTech и JohnnyBoy за объяснение мне, как работал CheckBox и что мне нужно было посмотреть.

Я узнал, что CheckBox не имеет публичной функции подсветки, поэтому мне пришлось проявить творческий подход.
То, что я сделал, я создал обычай CheckBox и хорошо .. может просто показать вам код: P

public class MyCbx : CheckBox { 
    protected override void OnGotFocus(EventArgs e) { 
     base.OnGotFocus(e); 
     base.OnEnter(e); 
     base.OnMouseEnter(e); 
    } 
    protected override void OnLostFocus(EventArgs e) { 
     base.OnLostFocus(e); 
     base.OnLeave(e); 
     base.OnMouseLeave(e); 
    } 
    protected override void OnMouseLeave(EventArgs e) { 
     if(!this.Focused) {//prevent it from losing highligh if control is in focus 
      base.OnMouseLeave(e); 
     } 
    } 
} 

Так я называю MouseEnter и событие, когда он получить или потерять фокус, это сделает его изменение к выделенному состоянию.

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