怎么设置自定义控件的选择状态?

haozi8123 2006-12-13 08:37:58
在WinForm中,我做了一个简单的自定义控件,设名为:UC_Test

继承于System.Windows.Forms.UserControl,

然后设置背景色为兰色(只是为了与主界面背景不同)

然后我在主界面中拖了一个UC_Test,

请问如何实现以下效果:

在运行状态下,如果我点击这个控件时,它变成选中状态,就像button控件获取了焦点一样,四周有特殊的边框,是要自己用GDI实现吗?

另外怎么获取窗体内被选中的控件?

谢了


...全文
247 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaochong12 2006-12-14
  • 打赏
  • 举报
回复
http://www.it130.net/Csharp/215439.htm
jickie阿文 2006-12-14
  • 打赏
  • 举报
回复
在Click事件中加下面代码,
ControlPaint.DrawFocusRectangle(System.Drawing.Graphics.FromHwnd(this.Handle),this.ClientRectangle);
然后,揭帖
北京的雾霾天 2006-12-14
  • 打赏
  • 举报
回复
当控件失去焦点或得到焦点的时候让控件自绘以表示它是不是正有焦点,画焦点的方法WinForm中已有现成的方法了.就是ControlPaint.DrawFocusRectangle,所以把我上面的代码直接粘到你的控件中就可以实现了.
qltouming 2006-12-14
  • 打赏
  • 举报
回复
简单的办法,再继承一个System的Control接口,就什么都有了
北京的雾霾天 2006-12-14
  • 打赏
  • 举报
回复
在你的控件中放下如下的代码就可以了:
protected override void OnGotFocus(EventArgs e)
{
base.OnGotFocus(e);
this.Invalidate();
}
protected override void OnLostFocus(EventArgs e)
{
base.OnLostFocus(e);
this.Invalidate();
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (this.Focused)
{
ControlPaint.DrawFocusRectangle(e.Graphics, this.ClientRectangle);
}
}

要得到活动控件可以用this.ActiveControl来得到.
jickie阿文 2006-12-14
  • 打赏
  • 举报
回复
不好意思,就是在自定义控件的适当事件中加入上述代码,就实现了。
jickie阿文 2006-12-14
  • 打赏
  • 举报
回复
ControlPaint.DrawButton(
System.Drawing.Graphics.FromHwnd(this.Handle),0,0,this.Width,this.Height,
ButtonState.Pushed);
这样的话,自定义控件样式会变成和Button控件被按下时一样的状态。
sdl2005lyx 2006-12-14
  • 打赏
  • 举报
回复
你在自定义控件UC_Test的MouseClick事件里,设置你所需要的背景色,在MouseLeave事件里恢复控件的背景色即可!!!
nijiaze 2006-12-14
  • 打赏
  • 举报
回复
欢迎各界.Net初学&高手们加入Q群12757054(要经常在线)
希望大家的问题能够及时的得到解决.
flyaqiao 2006-12-13
  • 打赏
  • 举报
回复
在OnPaint里画个选中

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧