C#无边框窗体如何实现标准窗口最大化动画?
WinForms窗口最大化动画实现方案
直接设置WindowState = FormWindowState.Maximized没法触发系统标准的最大化动画——这是因为这种方式是直接切换窗口状态,跳过了系统内置的动画流程。
要实现和手动点击最大化按钮完全一致的动画效果,得通过Windows API模拟系统的最大化指令:
步骤1:引入API声明
在你的Form类里添加以下代码:
using System.Runtime.InteropServices; public partial class YourForm : Form { private const int WM_SYSCOMMAND = 0x0112; private const int SC_MAXIMIZE = 0xF030; [DllImport("user32.dll")] private static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); }
步骤2:触发最大化动画
在需要执行最大化的逻辑处调用:
SendMessage(this.Handle, WM_SYSCOMMAND, (IntPtr)SC_MAXIMIZE, IntPtr.Zero);
这样就能让窗口按照系统默认的动画平滑最大化,和用户手动操作的体验完全一致。
内容的提问来源于stack exchange,提问作者DALVES2012
相关产品推荐
相关产品推荐

