每个Control
人都有一个Paint
事件。您必须订阅此事件并查看给定的参数。sender
是应该绘制的当前控件。您可以在您的方法中将其转换为Control
. 现在您可以通过检查来检查控件是否聚焦control.Focused
,如果它是真的,只需在 PaintEventArgs 的图形对象中做任何您喜欢的事情。这可以进一步封装在一个扩展方法中,这将使使用变得相当容易。
public static void DrawBorderOnFocused(this Control control)
{
if(control == null) throw new ArgumentNullException("control");
control.Paint += OnControlPaint;
}
public static void OnControlPaint(object sender, PaintEventArgs e)
{
var control = (Control)sender;
if(control.Focused)
{
var graphics = e.Graphics;
var bounds = e.Graphics.ClipBounds;
// ToDo: Draw the desired shape above the current control
graphics.DrawLine(Pens.BurlyWood, new PointF(bounds.Left, bounds.Top), new PointF(bounds.Bottom, bounds.Right));
}
}
代码中的用法将类似于:
public MyClass()
{
InitializeComponent();
textBox1.DrawBorderOnFocused();
textBox2.DrawBorderOnFocused();
}