如果复选框上未应用文本,Winforms复选框焦点问题
我在Winforms上有多个复选框,但没有所有复选框的文本属性, 所以问题是,当我将鼠标悬停在复选框上时,它会高亮显示,但当我使用tab键转到复选框时,它永远不会高亮显示如果复选框上未应用文本,Winforms复选框焦点问题,winforms,checkbox,focus,Winforms,Checkbox,Focus,我在Winforms上有多个复选框,但没有所有复选框的文本属性, 所以问题是,当我将鼠标悬停在复选框上时,它会高亮显示,但当我使用tab键转到复选框时,它永远不会高亮显示 如果有人有类似的问题,并且已经解决了,请提供帮助。问题是,当复选框获得焦点时,它只会突出显示控件的文本部分,在您的情况下,该部分为空。您有几个选择: 1) 对于所有“空白”文本框,请将“文本”属性设置为空格。当您在控件上单击tab键时,这将创建一个小的高亮显示部分 2) 编程复选框的OnEnter和OnLeave事件,并围绕整
如果有人有类似的问题,并且已经解决了,请提供帮助。问题是,当复选框获得焦点时,它只会突出显示控件的文本部分,在您的情况下,该部分为空。您有几个选择: 1) 对于所有“空白”文本框,请将“文本”属性设置为空格。当您在控件上单击tab键时,这将创建一个小的高亮显示部分 2) 编程复选框的OnEnter和OnLeave事件,并围绕整个控件绘制/绘制一个正方形 3) 如果希望默认的鼠标指针行为在复选框本身上创建淡黄色高亮显示,请按如下方式创建自己的复选框控件:
public class MyCB : CheckBox
{
protected override void OnEnter(EventArgs e)
{
base.OnEnter(e);
base.OnMouseEnter(e);
}
protected override void OnLeave(EventArgs e)
{
base.OnLeave(e);
base.OnMouseLeave(e);
}
}
可以通过将AutoSize属性设置为False来解决此问题。当AutoSize为True时,它的行为类似于AutoSize设置为True的标签,因为空标签几乎不会占用屏幕上的任何空间。如果AutoSize=False,您可以手动设置复选框的边框。我为
复选框添加了一个事件处理程序。Paint
事件并添加了以下内容:
private void checkBox1_Paint(object sender, PaintEventArgs e)
{
CheckBox checkBox = sender as CheckBox;
if (checkBox.Focused)
{
// e.ClipRectangle is affected by checkBox.Padding. Be careful when changing the Padding.
ControlPaint.DrawFocusRectangle(e.Graphics, e.ClipRectangle, checkBox.ForeColor, checkBox.BackColor);
}
}
我还调整了
复选框。填充
为2,2,0,1
,以获得距离复选框边缘1像素的边框
如果仅绘制边框,请尝试设置这些属性
AutoSize : False
CheckAlign : MiddleCenter
Font: Courier New, 12.25pt
TextAlign: MiddleRight
Padding : 0, 5, 0, 0
Size : 26, 26
Text : " " (two spaces)
将AutoSize属性设置为false仍然不会更改文本为空的事实,默认情况下,当您在复选框中添加选项卡时,它只高亮显示文本块,而不是整个控件本身。您可以将控件设置为所需大小,自动调整大小应用于复选框,而不是复选框内的文本框。