您的位置:首页 > 编程语言 > C#

C#.NET 实现右下角弹出窗口

2012-10-29 15:20 337 查看
在做一个功能的时候,需要在右下角弹出一个提示窗口,像QQ那样的,找 了以前写的看了看,发现在任务栏高度发生变化时窗体会被遮盖住,这是因为窗体弹出的位置是控制在屏幕的右下角的,如果任务栏的高度发生变化,则窗体就会被遮盖,这样就需要在弹出窗体 的时候知道任务栏的高度,从而动态的控制窗体距离屏幕的距离。网上查了一些方法,感觉太复杂,于是根据自己的想法实现了这个功能,先用着,方法可能有点笨,不过还是实现了想要的效果。以下是实现方法:

 

新建一个窗口,设置窗体的各项属性shwoInTaskbar为false,maximizebox为false,minimizebox为false等

放置两个timer控件分别对两个timer控件写事件如下:

//timer1用于实现渐显效果

private void timer1_Tick(object sender, EventArgs e)

{

if (this.Opacity == 1)  //如果窗体透明度为100%停止记时

{

this.timer1.Stop();

}

else  //否则窗体透明度加0.05,直到为1

{

this.Opacity = this.Opacity + 0.05;

}

}

//timer2用于关闭时出现渐隐效果

private void timer2_Tick(object sender, EventArgs e)

{

if (this.Opacity == 0)

{

this.timer1.Stop();

this.timer2.Stop();

this.Close();

}

else

{

this.Opacity = this.Opacity - 0.1;

}

}


 

之后在窗体的load事件里写:

int Heightone = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;         //获取屏幕的高度

int Heighttwo = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height;   //获取工作区的高度

int screenX = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;      //获取屏幕的宽度
int renwu = Heightone - Heighttwo;          //屏幕的高度减去工作区的高度,得到任务栏的高度,只所以获取任务栏的高度,是由于一些时候任务栏的高度不固定。避免窗体被任务栏遮挡住

this.Top = Heightone - 160-renwu;     //距离上边的距离=屏幕的高度-窗体的高度-任务栏的高度

this.Left = screenX - 290;           //距离左边的距离=屏幕的宽度-窗体的宽度

this.Opacity = 0;     //设置窗体的不透明度为0

this.timer1.Start();    //启动记时器


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: