public class UserControl1 : UserControl
{
public UserControl1()
{
SetStyle(ControlStyles.Selectable, true);
}
protected override void OnGotFocus(EventArgs e)
{
base.OnGotFocus(e);
Invalidate(false);
}
protected override void OnLostFocus(EventArgs e)
{
base.OnLostFocus(e);
Invalidate(false);
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (Focused)
{
Rectangle rect = ClientRectangle;
rect.Inflate(-1, -1);
ControlPaint.DrawBorder(
e.Graphics, ClientRectangle,
Color.White,
ButtonBorderStyle.Dashed);
}
}
}
只有Textbox才有输入焦点
你可以覆盖原来的Focused属性,让返回值返回textbox的Focused属性
- C# code
-
public override bool Focused { get { return textbox1.Focused; } }
这好像于控件的Focused无关,获得焦点也不会有那个效果
如果要想有那个效果的话
你可以:
private void UserControl1_MouseDown(object sender, MouseEventArgs e)
{
this.BorderStyle = BorderStyle.FixedSingle;
}
然后在失去焦点的时候,你再
this.BorderStyle = BorderStyle.None;