C# 如何实现窗口关闭的时候,窗口渐隐然后再退出呢?重写了OnFormClosing方法,或者用其他方法实现也行。

如题所述

我前阵子就做过这个,给你一个现成的代码:
[DllImport("user32")]
private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);
//下面是可用的常量,根据不同的动画效果声明自己需要的
private const int AW_HOR_POSITIVE = 0x0001;//自左向右显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志
private const int AW_HOR_NEGATIVE = 0x0002;//自右向左显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志
private const int AW_VER_POSITIVE = 0x0004;//自顶向下显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志
private const int AW_VER_NEGATIVE = 0x0008;//自下向上显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志该标志
private const int AW_CENTER = 0x0010;//若使用了AW_HIDE标志,则使窗口向内重叠;否则向外扩展
private const int AW_HIDE = 0x10000;//隐藏窗口
private const int AW_ACTIVE = 0x20000;//激活窗口,在使用了AW_HIDE标志后不要使用这个标志
private const int AW_SLIDE = 0x40000;//使用滑动类型动画效果,默认为滚动动画类型,当使用AW_CENTER标志时,这个标志就被忽略
private const int AW_BLEND = 0x80000;//使用淡入淡出效果
private void fmNews_FormClosing(object sender, FormClosingEventArgs e)
{
AnimateWindow(this.Handle, 1000, AW_BLEND | AW_HIDE);
}
在FormClosing这个方法里面监听到窗口关闭信息然后进入哪个方法。追问

汗!~~上面的都看不懂。

追答

你只管用就行了呀,上面导入user32.dll的引用而已,以后你会碰到更多的。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-14
在formcloseing 中循环设定窗体的 透明度,到完全透明时循环退出,窗体自动关闭
未测试追问

需要timer时间控制的,计算机的循环速度是非常快的。

追答

在循环中设定透明度后可sleep 100毫秒

第2个回答  2012-12-14
this.hide(),this.open()this.hide(),this.open()

...呢?重写了OnFormClosing方法,或者用其他方法实现也行。
private const int AW_HIDE = 0x10000;\/\/隐藏窗口 private const int AW_ACTIVE = 0x20000;\/\/激活窗口,在使用了AW_HIDE标志后不要使用这个标志 private const int AW_SLIDE = 0x40000;\/\/使用滑动类型动画效果,默认为滚动动画类型,当使用AW_CENTER标志时,这个标志就被忽略 private const int AW...

相似回答