Проблема перерисовки Winform SplitContainers - PullRequest
1 голос
/ 11 июля 2011

Я добавил SplitContainer внутри другой панели SplitContainer.Все перерисовывается нормально, когда сплиттеры движутся.Но изменение размера внутреннего SplitContainer не будет работать правильно, если размер основного SplitConainer изменился с помощью кнопок максимизации / восстановления основной формы.

Если я переместу сплиттер, он все прекрасно перерисовает.Я пытался сделать Invalidating все в каждом событии SplitPanel SizeChanged, но безуспешно.У тебя есть идеи?

1 Ответ

3 голосов
/ 15 июля 2011

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

http://social.msdn.microsoft.com/forums/en-US/windowsuidevelopment/thread/25181bd5-394d-4b94-a6ef-06e3e4287527/

Небольшое исследование показало, что Windows перестает отправлять WM_SIZE, когда достигает определенного уровня вложенности. Другими словами, он не отправит WM_SIZE вашим дочерним окнам, если вы попытаетесь изменить их размер при обработке WM_SIZE в родительских окнах. В зависимости от пакетов USER stuff / updates / serivice максимальный уровень вложенности, при котором он прекращает распространение, WM_SIZE может варьироваться от 15 до 31 и даже намного выше (фактически недоступен) в последней версии XP 32bit / sp2. Но это все еще слишком мало под XP x64, и все же некоторые другие уродливые вещи случаются с другими сообщениями в некоторых сборках Vista.

Так что это, безусловно, ошибка Windows.

...