Как заставить окно перерисовать? - PullRequest
4 голосов
/ 11 апреля 2011

У меня полноэкранное окно с использованием этого кода:

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

В Win7 все работает нормально, но в WinXP некоторые элементы окна не перерисовываются, когда окно становится полноэкранным.Есть ли способ заставить окно сделать полную перерисовку и обновление макета?

UPD все перерисовывается нормально, если я переключаюсь на другое приложение с помощью Atl-Tab, а затем снова на мое

1 Ответ

5 голосов
/ 13 июля 2012

Вы можете принудительно перерисовать окно, используя 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...