正常情况下,当通过窗体上的控件进行切换时,当焦点设置为CheckBox控件时,文本被概述为显示焦点。如何强制在复选框周围绘制焦点轮廓,而不是复选框控件上的文本?
我正在使用没有文字的CheckBox(所以只显示框)。我如何强制围绕框而不是文字绘制焦点轮廓?
正常情况下,当通过窗体上的控件进行切换时,当焦点设置为CheckBox控件时,文本被概述为显示焦点。如何强制在复选框周围绘制焦点轮廓,而不是复选框控件上的文本?
我正在使用没有文字的CheckBox(所以只显示框)。我如何强制围绕框而不是文字绘制焦点轮廓?
看一看 - 只给你一个想法:
public class MyCheckBox : CheckBox
{
public MyCheckBox()
{
// AutoSize is virtual - so you should not call it here, just demo
AutoSize = false;
// You need padding to make the base.OnPaint() method leaving you some space
Padding = new Padding(2, 2, 0, 0);
Size = new Size(17, 16);
}
protected override void OnPaint(PaintEventArgs pevent)
{
base.OnPaint(pevent);
if(!Focused)
{
return;
}
using(var pen = new Pen(Color.Black))
{
pen.DashStyle = DashStyle.Dot;
pevent.Graphics.DrawRectangle(pen, new Rectangle(0, 0, 16, 15));
}
}
}
我想你必须派生出你自己的“无文本复选框”,才能正确识别控件的边界。
听起来可能听起来很复杂,但应该不会太困难,我想。当我学习.NET 1.x时,我创建了一些奇特的复选框,但我不记得关注焦点矩形。
+1提供的代码! ;-) – Cerebrus 2009-05-28 16:45:13