Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何强制窗口重画?_C#_.net_Wpf_Xaml - Fatal编程技术网

C# 如何强制窗口重画?

C# 如何强制窗口重画?,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,我有一个全屏窗口,使用以下代码: WindowStyle = System.Windows.WindowStyle.None; WindowState = System.Windows.WindowState.Maximized; Topmost = true; 它在Win7下工作正常,但在WinXP下,当窗口全屏显示时,某些窗口元素不会被重新绘制。有没有办法强制窗口进行完全重画和布局更新 UPD all已重绘ok,如果我切换到另一个带有Atl选项卡的应用程序,然后返回到我的应用程序您可以使用

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

WindowStyle = System.Windows.WindowStyle.None;
WindowState = System.Windows.WindowState.Maximized;
Topmost = true;
它在Win7下工作正常,但在WinXP下,当窗口全屏显示时,某些窗口元素不会被重新绘制。有没有办法强制窗口进行完全重画和布局更新


UPD all已重绘ok,如果我切换到另一个带有Atl选项卡的应用程序,然后返回到我的应用程序

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

不幸的是,在这种情况下它似乎不起作用。问题依然存在。这是否也与您的案例有关@阴影向导,看起来很像,但我使用.NET4