我的一个Form要实现这样的功能,当鼠标进入时,将其透明度修改为1,将鼠标离开后其透明度变为0.5,于是我重载了Form的OnMouseEnter事件和OnMouseLeave事件,但是我后来发现:当鼠标移到这个Form上的子控件时,会触发OnMouseLeave事件,当鼠标从其子控件上移到Form上时,会触发OnMouseEnter事件。请问有没有方法可以避免呢
解决方案 »
- 关于TreeView数据绑定以及鼠标事件问题请教高手
- 窗体间怎样传值
- 大家觉得用语句来连接取数还呢,还是用VS里面现有的控件好呢
- 我做的windows服务为什么会在任务管理器中关闭?
- 没想明白,屏蔽基类的相关属性
- 当TextBox.Select(start,length)选择的内容需要拉动滚动才能看见时,怎样自动滚动选择内容到最顶?
- 如何在Winform下将一个模态窗体中自定义变量ID的值传递给父窗体呢?
- 三只熊熊来接分
- @@@@C#线程池的并发问题,高手进@@@@
- 那里有Visual Studio .net 2003的下载!
- Profile到底儿有啥实际的用途?
- windows应用程序(C#)与Access
你再检查检查代码,确认下是Form的事件
private void Form1_MouseLeave(object sender, EventArgs e)
{
Rectangle bounds = this.RectangleToScreen(this.ClientRectangle);
if (!bounds.Contains(Cursor.Position))
{
this.Opacity = 0.5;
}
}
但是当鼠标位于这个Form的子控件上时,是无法引发onmousemove事件的
if (Cursor.Position.X > this.Location.X && Cursor.Position.Y > this.Location.Y && Cursor.Position.X < this.Location.X + this.Width && Cursor.Position.Y < this.Location.Y + this.Height)
this.Opacity = 1;
else
this.Opacity = 0.5;