Bug in Form.WindowState
От: orangy Россия
Дата: 12.10.04 14:47
Оценка: 76 (7)
#Имя: FAQ.winforms.restorebug
Обнаружился баг в реализации состояний окон в дотнете. При выставлении WindowState = FormWindowState.Normal; на самом деле происходит ShowWindow из WinAPI с флагом Restore. Т.е. если до минимизации окно было в состоянии Maximized, а вы программно из состояния минимизации (например, из system tray) поднимаете его выставлением в Normal происходит сбой. Внутренняя система отслеживания состояний путается и в результате запоминает координаты окна в минимизированном режиме (-32000, -32000, 164, 27) как координаты в нормальном режиме. После этого происходит проблема Restore.

Чтобы этого избежать, в OnSizeChanged (или другом удобном месте) запоминайте последнее не-Minimized состояние и в случае программного восстановления окна используйте именно его.
... << RSDN@Home 1.1.4 beta 3 rev. 192>>
"Develop with pleasure!"
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.