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

 

在做一个功能的时候,需要在右下角弹出一个提示窗口,像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();    //启动记时器

 

posted @ 2011-08-03 14:26  葛福财  阅读(3373)  评论(1编辑  收藏  举报