C#实现窗口自动隐藏
form automatically hide with C#
贵州省商业高等专科学校涂显政
Commercial college of guizhou
tu xianzheng
摘要:利用C#语言实现了靠屏边窗口自动隐藏及鼠标指向后自动弹出
关键字:C#,窗体,隐藏
Abstract: mark a form with C#, the form can automatically hide when it close the edge of screen and it can recover to normal when mouse point on it.
Key words: C#,form,hide
正文
一、C#简介
C#是由微软公司所开发的一种面向对象的、运行于.NET Framework之上的高级程序设计语言,目前有比较广泛的应用。
二、窗口自动隐藏
现实中有这样的程序设计需要,程序窗体在靠近屏幕边的时候,希望窗口能自动隐藏,仅显示很小的一条边,当鼠标指向这条边的时候,窗体会自动弹出。三、现实情况和设计目的
很多应用程序已经实现了这个功能,例如大家熟悉的QQ窗口或者一些考试软件都使用了这种窗体功能,但相关的介绍文章不多,这里用一种方式将其实现,供初学者和有实际需要者参考。
四、实现方法和过程
窗体自动隐藏在窗体靠屏幕的上、左、右边时都可以实现,为叙述简单起见,下面仅以向靠上边时隐藏为例来说明。
1、窗体初始设置:加入一个panel控件,设置它靠在窗体的上边,高度很窄,可以与窗体隐藏后的高度一样大,当然不一样大也可,将其enable属性设为false。
2、窗体自动隐藏:使用窗体的MouseLeave事件,当事件发生后,用窗体的location 属性判断窗体是否靠边,即判断location的Y值是否小于一个比较小的值,比如
5。若是,则记录窗体的高度和窗体FormBorderStyle属性(一会恢复时用),将窗体FormBorderStyle属性设为none,再把窗体height属性设为一个比较小的值,比如5,窗体即可以变成高只有5像素的一个小条,达到隐藏效果,再把panel 控件的enable属性设为true,以使其能接收事件。
3、窗体自动弹出:鼠标指向隐藏中的窗体,窗体会恢复成隐藏前的状态。但这个功能不能用窗体的MouseEnter事件来做,这样做会产生一个MouseLeave事件和MouseEnter事件的循环发生。解决的办法是在窗体中加入panel控件,窗体隐藏成一小条后,按前面的设置,在窗体上显示的就是panel控件,它可以接收事件,鼠标指向隐藏后的窗体,就是指向panel控件。Panel的MouseEnter事件发生后,恢复窗体高度和FormBorderStyle属性,为避免麻烦,将panel的enable 属性设为false。
五、部分源代码
1、窗体隐藏
private void Form1_MouseLeave(object sender, EventArgs e)
{
if (this.Location.Y < 5)
{
h = this.Height;
k = this.FormBorderStyle;
this.FormBorderStyle =
System.Windows.Forms.FormBorderStyle.None;
this.Height = 5;
panel1.Enabled = true;
}
}
2、恢复
private void panel1_MouseEnter(object sender, EventArgs e)
{this.FormBorderStyle = k;
this.Height = h;
panel1.Enabled = false;
}
以上功能在microsoft visual studio 2005中实现
六、参考文献:
MSDN Library for Visual Studio 2005
作者简介:涂显政(1968-),男(苗),贵州印江人,讲师,工程硕士。
联系方式:
通信地址:贵州省贵阳市云岩区小石城18栋1单元401 邮编:550004
手机:139********