Обновления пользовательского интерфейса не происходят в ожидаемом порядке - PullRequest
1 голос
/ 30 мая 2010

У меня есть панель с несколькими дочерними элементами управления в сетке. Каждый дочерний элемент управления состоит из Panel с PictureBox и метки. При щелчке по одному из этих дочерних элементов управления он становится «выбранным» (что в основном влечет за собой изменение его фона на другой цвет), и событие запускается. В обработчике этого события изображение отображается в PictureBox в отдельной форме.

В коде фон дочернего элемента управления определенно изменяется до запуска события, но по какой-то причине он никогда не обновляется во время выполнения, пока после изображение не обновилось в другом Форма. Я пытался Invalidate () и Refresh () дочерний элемент управления до запуска события, безрезультатно.

Почему это происходит, и что я могу сделать, чтобы исправить это?

Ответы [ 2 ]

0 голосов
/ 30 мая 2010

Пожалуйста, попробуйте следующее: как только вы изменили цвет фона, выполните Application.DoEvents (); и после этого запустите событие для другой формы.

0 голосов
/ 30 мая 2010

Если я правильно помню, методы, связанные с событием, выполняются в том же потоке, в котором произошло событие, поэтому поток пользовательского интерфейса блокируется выполнением изменения изображения в отдельной форме. В качестве решения используйте дополнительный поток (например, через ThreadPool) для выполнения события. Таким образом, код будет продолжен, и пользовательский интерфейс может быть перерисован.

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