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!"
Re: Bug in Form.WindowState
От: Alex Reyst Россия  
Дата: 13.10.04 03:37
Оценка:
Здравствуйте, orangy, Вы писали:

O>Обнаружился баг в реализации состояний окон в дотнете.


Спасибо. Но весьма странно: неужели такой простой глюк, который должен проявляться весьма часто, все это время уходил от внимания?
Все, что здесь сказано, может и будет использоваться против меня...
Re[2]: Bug in Form.WindowState
От: orangy Россия
Дата: 13.10.04 05:48
Оценка:
Здравствуйте, Alex Reyst, Вы писали:

O>>Обнаружился баг в реализации состояний окон в дотнете.

AR>Спасибо. Но весьма странно: неужели такой простой глюк, который должен проявляться весьма часто, все это время уходил от внимания?
Да вроде не уходил... AVK говорит, что про это всем известно уже года два По мне так, здесь проблема именно в нетривиальности повторения. Чтобы его словить нужно развернуть окно, затем свернуть окно, а затем программно выставить WindowState = Normal. После этого окно станет Maximized, а при попытке сделать ему Restore — вот этот самый глюк и вылезет. Согласись — не каждый день ты такую последовательность совершаешь Отсюда, кстати и факт, что чаще всего вылазит этот глюк при сворачивании в трей — там приходится восстанавливать программно.
"Develop with pleasure!"
Re[3]: Bug in Form.WindowState
От: Блудов Павел Россия  
Дата: 13.10.04 09:18
Оценка: +1
Здравствуйте, orangy, Вы писали:

O>Да вроде не уходил... AVK говорит, что про это всем известно уже года два


Во всяком случае, это баг есть в нынешнем янусе.
... << RSDN@Home 1.1.4 beta 2 >>
Re[4]: Bug in Form.WindowState
От: orangy Россия
Дата: 13.10.04 13:21
Оценка: 18 (1)
Здравствуйте, Блудов Павел, Вы писали:

O>>Да вроде не уходил... AVK говорит, что про это всем известно уже года два

БП>Во всяком случае, это баг есть в нынешнем янусе.
Уже нету
Автор: orangy
Дата: 12.10.04
... << RSDN@Home 1.1.4 beta 3 rev. 192>>
"Develop with pleasure!"
Re[4]: Bug in Form.WindowState
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 13.10.04 14:16
Оценка:
Здравствуйте, Блудов Павел, Вы писали:

БП>Во всяком случае, это баг есть в нынешнем янусе.


Еще в Expresso.
... << RSDN@Home 1.1.4 beta 3 rev. 190>>
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.