【发布时间】:2016-01-20 09:10:11
【问题描述】:
我正在制作一个配置编辑器表单并且遇到了一些问题,我在用户友好和高效的设计上投入了大量时间,因此希望TabIndex 能够完美地工作以最大限度地减少鼠标的使用。
我现在的问题是,当我尝试通过控件切换时,我注意到CheckBox 没有像用鼠标按下它那样获得焦点,这意味着我无法直接从键盘切换并更改它们的状态。
如何通过 TabIndex 和 TabStop 使 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