Клавиша Alt вызывает перерисовку формы - PullRequest
2 голосов
/ 13 января 2012

Я столкнулся с проблемой, которую, надеюсь, сможет преодолеть один из вас, замечательных мыслителей ...

По какой-то причине, после того, как я загрузил свою форму Windows, если пользователь нажимает Alt , перерисовка формы вызывает мигание.

Это происходит только в первый раз, поэтому любые последующие нажатия клавиши Alt ничего не делают.

У меня нет полосок меню или событий, которые обрабатывают нажатие клавиши, поэтому я могу только предположить, что это либо настройка, которую я не установил, либо установка, которую я неосознанно установил.

FYI, формаделает следующее в конструкторе

DoubleBuffered = true;
SetStyle(ControlStyles.OptimizedDoubleBuffer | 
         ControlStyles.AllPaintingInWmPaint, true);

Это потому, что у меня есть несколько панелей и меток, которые также делают то же самое для реализации прозрачности.

Скрестив пальцы, один из вас будет знать, почему;)

1 Ответ

8 голосов
/ 13 января 2012

Вставьте этот код в вашу форму:

    protected override void WndProc(ref Message m) {
        // Suppress the WM_UPDATEUISTATE message
        if (m.Msg == 0x128) return;
        base.WndProc(ref m);
    }

Это хорошо сработало, чтобы подавить краску, когда я попробовал. Обработка фокуса в Windows довольно странная, тщательно протестируйте ее, чтобы убедиться, что у нее нет неожиданных побочных эффектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...