使标签参与控件选项卡

本文关键字:选项 控件 标签 | 更新日期: 2023-09-27 18:25:46

我有从Label继承的自定义控件,并将ControlStyle.Selectable设置为true

当用户单击控件时,控件将获得焦点,但如果用户从另一个控件使用 Tab 键,则控件不会获得焦点。

即使我有一个仅由该类型的控件填充的表单,它们也不会通过制表符获得焦点。

如何通过 Tab 键使Label获得焦点?

使标签参与控件选项卡

将其设为TextBox可能会更容易,将BorderStyle设置为 None,将BackColor设置为 Control 并将ReadOnly设置为 True 。 这应该提供标签的外观,但仍允许将其按 Tab 键固定为焦点。

更新 看起来 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设置为 true