我在Winforms上有多个复选框,没有所有复选框的Text属性, 所以问题是,当我将鼠标悬停在复选框上时会突出显示但是当我使用tab键进入复选框时,它永远不会突出显示..
如果有人有类似的问题已经解决了,请帮助..
答案 0 :(得分:7)
问题是当复选框获得焦点时,它仅突出显示控件的文本部分,在您的情况下为空。你有几个选择:
1)对于所有“空白”文本框,将text属性设置为空格。当您选择控件时,这将创建一个小的突出显示部分。
2)编程复选框的OnEnter和OnLeave事件,并在整个控件周围绘制/绘制一个方块。
3)如果您希望默认的MouseEnter行为在复选框本身上创建黄色突出显示,请按如下所示创建您自己的复选框控件:
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);
}
}
答案 1 :(得分:3)
我为CheckBox.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);
}
}
我还将CheckBox.Padding
调整为2, 2, 0, 1
,以获得距离CheckBox
边缘1个像素的边框。
答案 2 :(得分:0)
您可以通过设置AutoSize属性= False来解决此问题。当AutoSize为True时,它的作用类似于AutoSize设置为true的Label,因为空标签在屏幕上几乎不占用任何空间。使用AutoSize = False,您可以手动设置复选框的边界矩形。
答案 3 :(得分:0)
如果只绘制边框,请尝试设置这些属性。
AutoSize : False
CheckAlign : MiddleCenter
Font: Courier New, 12.25pt
TextAlign: MiddleRight
Padding : 0, 5, 0, 0
Size : 26, 26
Text : " " (two spaces)