黑马程序员技术交流社区
标题:
c# 窗体关闭窗体的问题
[打印本页]
作者:
拼音
时间:
2013-5-22 13:55
标题:
c# 窗体关闭窗体的问题
做了个winform程序,在一个窗体上很多小图片,当鼠标移动到小图上时,打开一个新的窗体,并在新窗体的picturebox上显示大图,我想让鼠标离开小图的时候关闭显示大图的窗体,应该怎么实现呢
定义一个窗体PictureForm,风格无边框,上边一个picturebox1铺满窗体,总在最前(TopMost = true )
PictureForm重载接口Show()
C# code
public PictureForm.Show(Image img, Point ptLocation)
{
this.picturebox1.BackGroundImage = img;
this.Location = ptLocation;
this.Size = img.Size;
this.Show();
}
小图片所在窗体定义成员变量并实例化 PictureForm pictureForm = new PictureForm();
小图片控件MouseEnter事件
C# code
if(pictureForm.Visibe == false)
{
pictureForm.Show(e.Sender.BackGroundImage,Location) //位置可以自己指定
this.Focus(); //取回焦点
}
小图片控件MouseLeave事件
C# code
if(pictureForm.Visibe == true)
{
pictureForm.Hide() //位置可以自己指定
}
作者:
huaruibang
时间:
2013-5-22 18:04
理论上无法实现 ,因为 当你打开一个新窗体 那么 ,你的当前的窗体的 失去焦点,就是说是 无法控制(没法再捕捉鼠标),除非你手动点击 父窗体 一下,让 父窗体重新获取 焦点,这样才可以。(如果不是此段就是我 胡言乱语)
实现方式: 在 父窗体里 定义 事件 例如: public static event Action ClosedPicFrom; 然后 再你的 鼠标移出事件订阅的方法 中写入 if(ClosePicFrom!=null ClosedPicFrom();)
同时,在你的PictureForm 中 订阅 你写的 这个 父窗体中的事件。。。From1. ClosedPicFrom+=()=>this.Close();
作者:
huaruibang
时间:
2013-5-22 18:07
以上 是 比较 偷懒的 方式,因为 定义了static event 的话,就不用 在 Show PictureForm 的时候 将自身传递过去。。。(算了 不多说了)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2