我有一个全屏窗口,使用此代码:
WindowStyle = System.Windows.WindowStyle.None;
WindowState = System.Windows.WindowState.Maximized;
Topmost = true;
Run Code Online (Sandbox Code Playgroud)
它在Win7下工作正常,但在WinXP下,当窗口全屏时,一些窗口元素不会被重绘.有没有办法强制窗口进行完全重绘和布局更新?
如果我用Atl-Tab切换到另一个应用程序然后再回到我的应用程序,UPD全部重新绘制正常
您可以使用Windows API强制窗口重绘.
示例类实现:
public static class WindowsApi
{
private const int WmPaint = 0x000F;
[DllImport("User32.dll")]
public static extern Int64 SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);
public static void ForcePaint(this Form form)
{
SendMessage(form.Handle, WmPaint, IntPtr.Zero, IntPtr.Zero);
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
Form testForm = new Form();
testForm.ForcePaint();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4561 次 |
| 最近记录: |