最近在使用C#时想实现窗口动画从桌面的右下角平滑弹出,照实把自己难了一把,使用简单的Timer控件是可以方便的实现,可是如果窗口是动态生成的在实现时可能会有不必要的开支(还不小呢),其实我们只是想延时一下。不需要重复执行什么东西,因此没有必要使用Timer控件。那就使用Sleep()吧,可是一试验才知道使用Sleep()线程是实现了延时可是动画窗口也没有了。经过一番折腾后发现了原因。
    其实我们在使用Sleep()后原本自动放入消息队列中的WinShow和WinRefresh都不见了,没有触发相应的重绘方法。所以没有窗口了。
    我用下面的方法实现了,现在拿出来一起分享。
    第一次法帖,写的乱其八糟的。不好意思啦……
            Screen p;
            p = Screen.AllScreens[0];
            this.Top = p.WorkingArea.Height - 5;
            this.Height = 1;
            int i;
            for (i=0;i<120;i++)
            {
                Thread.Sleep(5);
                if (this.Height >= 360)
                {
                    
                }
                else
                {
                    this.Left = p.WorkingArea.Width - this.Width; 
                    this.Top = this.Top -3;
                    this.Height = this.Height + 3;
                    this.Show();
                    this.Refresh();
                    Thread.Sleep(5);
                }
            }