2011-04-11 167 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();