【问题标题】:C# Checkbox not gaining focus on TabstopC# Checkbox 没有获得对 Tabstop 的关注
【发布时间】:2016-01-20 09:10:11
【问题描述】:

我正在制作一个配置编辑器表单并且遇到了一些问题,我在用户友好和高效的设计上投入了大量时间,因此希望TabIndex 能够完美地工作以最大限度地减少鼠标的使用。

我现在的问题是,当我尝试通过控件切换时,我注意到CheckBox 没有像用鼠标按下它那样获得焦点,这意味着我无法直接从键盘切换并更改它们的状态。

如何通过 TabIndexTabStop 使 CheckBox 获得焦点,以便我可以通过 KeyUp 事件按 Enter 更改其状态。

下面是我的表单图片,旁边是TabIndex 的图片以及直接取自Form.Designer.cs 类的代码。

        // 
        // 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;

请注意,我很难解释这个原因,因为它有点复杂,如果我有一些错误,我不知道如何解释。

【问题讨论】:

  • CheckBox 控件更喜欢使用 Text 以显示焦点。
  • @GrantWinney 好的,现在我真的很困惑,主要是因为SpaceBar 有效,但让我感到困惑的是CheckBox 的视觉效果在焦点对准时不会改变,比如控件(fx 按钮)在获得焦点时会变成蓝色。
  • @LarsTech 我用文字对其进行了测试,似乎CheckBox 保持灰色,而上面的文字将具有虚线轮廓。
  • CheckBox 就是这样设计的。
  • @GrantWinney 我想要完成的是将CheckBox 更改为 LightBlue,就像您将鼠标悬停在它上面一样,就像按钮处于焦点时一样。

标签: c# winforms checkbox tabindex tabstop


【解决方案1】:

在对我的问题发表评论的人们的帮助下,我能够正确地了解要做什么和要搜索什么。
感谢 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 和 Leave 事件,这将使它变为突出显示状态。

【讨论】:

    猜你喜欢
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多