【问题标题】:How to force window to redraw?如何强制窗口重绘?
【发布时间】:2015-10-07 17:46:31
【问题描述】:

我有一个全屏窗口,使用以下代码:

WindowStyle = System.Windows.WindowStyle.None;
WindowState = System.Windows.WindowState.Maximized;
Topmost = true;

在 Win7 下可以正常工作,但在 WinXP 下,当窗口全屏时,某些窗口元素不会被重绘。有没有办法强制窗口进行完全重绘和布局更新?

如果我使用 Atl-Tab 切换到另一个应用程序,然后再回到我的应用程序,那么 UPD 全部重绘好了

【问题讨论】:

标签: c# .net wpf xaml


【解决方案1】:

您可以使用 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);
    }
}

用法:

Form testForm = new Form();
testForm.ForcePaint();

【讨论】:

    猜你喜欢
    • 2011-09-21
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    相关资源
    最近更新 更多