如何实现一个用户控件,当鼠标悬停在上面时会出现“热点”效果,并在其周围绘制边框的最简单方法是什么?
我曾尝试继承自定义控件并重写OnMouseHover事件以绘制边框,但似乎该事件未被触发。
谢谢!
如何实现一个用户控件,当鼠标悬停在上面时会出现“热点”效果,并在其周围绘制边框的最简单方法是什么?
我曾尝试继承自定义控件并重写OnMouseHover事件以绘制边框,但似乎该事件未被触发。
谢谢!
public partial class UserControl1 : UserControl, IMessageFilter
{
public UserControl1() {
InitializeComponent();
Application.AddMessageFilter(this);
}
public bool PreFilterMessage(ref Message m) {
if (!this.IsDisposed && this.ClientRectangle.Contains(this.PointToClient(Control.MousePosition))) {
this.BackColor = Color.Green; // Or whatever border color you want.
} else {
this.BackColor = SystemColors.Control; // Back to the UC's default border color.
}
return false;
}
}
注意:在我测试时,我发现很难使我的面板(Panel)的BackColor设置为不透明。我通过暂时将设计器中的BackColor更改为不同的颜色,然后再将其更改回我的默认颜色(Control)来解决这个问题。
Application.RemoveMessageFilter(this);
吗?这是强制性的。如果要在UserControl
中实现怎么做? - Odys