Обнаружился баг в реализации состояний окон в дотнете. При выставлении 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>> |