2011-04-11 68 views
4

我有一个全屏窗口,使用此代码:如何强制窗口重绘?

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

它的Win7下工作正常,但由于WinXP下,当窗口进入全屏一些窗口元素没有得到重绘。有没有办法强制窗口进行完全重绘和布局更新?

UPD全部重新绘制好的,如果我切换到使用ATL-Tab键另一个应用程序,然后回到我的

+1

任何机会,这是关系到你的情况呢? http://stackoverflow.com/questions/122857/wpf-transparent-borders-causes-the-ui-to-stop-redrawing – 2011-04-11 14:45:37

+0

@Shadow Wizard,它看起来很相似,但我使用.NET 4 – user626528 2011-04-11 14:52:50

+0

http:// msdn .microsoft.com/en-us/library/system.windows.uielement.invalidatevisual.aspx – gandjustas 2011-04-11 14:33:12

回答

3

你可能会迫使该窗口通过使用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();