Сделайте так, чтобы ярлык участвовал в управлении вкладками

У меня есть пользовательский элемент управления, который наследует от Label и имеет ControlStyle.Selectable установлен в true,

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

Даже когда у меня есть форма, заполненная только элементами управления такого типа, ни один из них не получает фокус при помощи вкладок.

Как я могу сделать мой Label получить фокус с помощью вкладок?

2 ответа

Решение

Может быть, проще сделать это TextBox, установить BorderStyle в None, установить BackColor в Control и установить ReadOnly в True, Это должно создать видимость ярлыка, но все же позволить ему вставлять ярлыки для фокусировки.

Обновление похоже на комбинацию SetStyle(ControlStyles.Selectable, true); а также TabStop = true;, вы можете получить метку для фокусировки, используя клавишу Tab. Ниже приведен простой пример, демонстрирующий его работу:

public class SelectableLabel : Label
{
   public SelectableLabel()
   {
      SetStyle(ControlStyles.Selectable, true);
      TabStop = true;
   }

   protected override void OnEnter(EventArgs e)
   {
      BackColor = Color.Red;
      base.OnEnter(e);
   }

   protected override void OnLeave(EventArgs e)
   {
      BackColor = SystemColors.Control;
      base.OnLeave(e);
   }

   protected override void OnMouseDown(MouseEventArgs e)
   {
      this.Focus();
      base.OnMouseDown(e);
   }
}

Установить свойство Control.TabStop к истине

Другие вопросы по тегам