bil*_*lpg 9 c# events mouseleave winforms mousehover
我有Form子类,带有处理程序MouseHover
和MouseLeave
.当指针位于窗口的背景上时,事件工作正常,但当指针移动到窗口内的控件上时,它会引发MouseLeave
事件.
无论如何有一个覆盖整个窗口的事件.
(.NET 2.0,Visual Studio 2005,Windows XP.)
小智 8
只要鼠标进入子控件,就不会触发MouseLeave事件
protected override void OnMouseLeave(EventArgs e)
{
if (this.ClientRectangle.Contains(this.PointToClient(Control.MousePosition)))
return;
else
{
base.OnMouseLeave(e);
}
}
Run Code Online (Sandbox Code Playgroud)
没有好的方法可以使MouseLeave可靠地用于容器控件.用计时器解决这个问题:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
timer1.Interval = 200;
timer1.Tick += new EventHandler(timer1_Tick);
timer1.Enabled = true;
}
private bool mEntered;
void timer1_Tick(object sender, EventArgs e) {
Point pos = this.PointToClient(Cursor.Position);
bool entered = this.ClientRectangle.Contains(pos);
if (entered != mEntered) {
mEntered = entered;
if (!entered) {
// Do your leave stuff
//...
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17796 次 |
最近记录: |