首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于 窗体(WINFORM) 事件 MouseLeave 的有关问题

2012-03-07 
关于 窗体(WINFORM) 事件 MouseLeave 的问题。我在程序里,想使用 frm_MouseLeave(object sender, EventArgs

关于 窗体(WINFORM) 事件 MouseLeave 的问题。
我在程序里,想使用 frm_MouseLeave(object sender, EventArgs e) 事件,想实现 在 鼠标 离开 窗体 的时候,让窗体自动收缩到屏幕上面,即 this.Location = new Point(this.Location.X, -this.Size.Height + 5)。

目前出现的问题是:

当我鼠标移动到 窗体(frm) 上的 图片(pictureBox) 控件上,就会立刻触发 frm_MouseLeave 事件,而不是移动到 窗体(frm)之外触发。

因此我想,能不能有一个事件,能够对窗体整体做触发,而不是遇到 窗体内的控件就 触发,否则我就控制不住窗体的自动收缩。

谢谢大家!

[解决办法]
1)估计还要一个控制变量
2)判断引发事件的sender是form还是pictureBox
[解决办法]
取屏幕坐标判断

 Rectangle _Info = new Rectangle(Location.X, Location.Y, this.Width, this.Height);
if (_Info.Contains(Cursor.Position))
{
this.Text = "ok";
}
else
{
this.Text = "no";
}
[解决办法]
根据你上面说的那样
如果鼠标从pictureBox(等)直接出去是不会触发FORM的MouseLeave 的
[解决办法]
帮顶!
[解决办法]
你别用事件判断了~~时间控件看看能解决不?
[解决办法]

C# code
private void frmZhiMa_MouseLeave(object sender, EventArgs e){    if (!this.ClientRectangle.Contains(this.PointToClient(Cursor.Position)))  //<--    {        if (this.Location.Y < 20)        {             this.Location = new Point(this.Location.X, -this.Size.Height + 5);        }    }}
[解决办法]
在TabControl 的MouseLeave里面一样的判断。
C# code
public FormTest()        {            InitializeComponent();            tabControl1.MouseLeave += new EventHandler(tabControl1_MouseLeave);        }        void tabControl1_MouseLeave(object sender, EventArgs e)        {            if (!this.ClientRectangle.Contains(this.PointToClient(Cursor.Position)))            {                System.Console.WriteLine("move out tabControl1_MouseLeave");            }        } 

热点排行