C#: Привязанная Панель не изменит размеры правильно

У меня есть странная проблема относительно автоматической калибровки панели в пользовательском элементе управления. Эта панель привязывается на всех 4 сторонах пользовательского элемента управления. Но привязка не всегда работает, как она должна:

Если пользовательский элемент управления изменен путем изменения размеров формы, право и нижние привязки не работают. Но если управление изменено при помощи разделителя, который находится в форме, оно работает правильно. Все другие средства управления, которые также затронуты путем изменения размеров работы правильно, просто эта панель, не сделают.

Я не вижу различия между изменением размеров через разделитель и через форму.

Установка размера вручную в OnResize UserControl только работает, если изменение размеров сделано путем перемещения разделителя. Если изменение размеров произойдет путем изменения размеров формы, то высота и ширина панели не изменятся на новые значения.

Править: Сделать это более ясным: пользовательский элемент управления добавляется к TabPage и устанавливается на Dock=DockType. Заливка.

Edit2: сделать это более сложным: Это - иерархия, управление используется: Форма содержит разделитель с 2 средствами управления (A и B). (B) содержит пользовательский элемент управления (C) с splitContainer. Контейнер разделения-> panel1 в (C) содержит tabcontrol (D). Этот tabcontrol (D) содержит пользовательский элемент управления (E) (на вкладке). Этот пользовательский элемент управления (E) имеет splitcontainer (F), в который помещается другой usercontrol с tabControl (G). Этот tabcontrol (G) имеет вкладки, и в этом разбивает на страницы, описанный пользовательский элемент управления (H) помещенный.

Если я помещаю управление (H) непосредственно к панели в splitcontainer (C), все хорошо работает. Так как все средства управления, которые добавляются к splitcontainer или вкладке, установлены на docktype=fill, я не вижу, почему последнее управление имеет это проблемы.

Есть ли какое-либо ограничение в платформе Windows Forms, которая ограничивает сумму дочерних элементов управления?

Править: Я загрузил TestApplication, с которым можно воспроизвести эту проблему. http://rapidshare.de/files/49092516/TestApplication.zip.html Это происходит только под Vista. XP победы и 7 работ правильно... При изменении размеров формы текстового поля с, "..." кнопка не изменит размеры, но если Вы изменяете размеры через вертикальный splitContainer, это работает.

20
задан Jan-Patrick Ahnen 2 February 2010 в 16:54
поделиться

3 ответа

Имеется ошибка с глубоким вложением, когда ядру не хватает места в стеке, что приводит к незаметному сбою изменения размера, стыковки и привязки.

См. https://web.archive.org/web/20140818095718/http://support.microsoft.com/kb/953934

36
ответ дан 29 November 2019 в 23:57
поделиться

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

1
ответ дан 29 November 2019 в 23:57
поделиться

Вы говорили как о «якоре», так и о «доке», которые могут служить схожим целям, но действуют по-разному. Ваша проблема может заключаться в том, что вы пытаетесь сделать и то, и другое, и это мешает желаемому поведению. Если нет, возможно, попробуйте переключиться с одного на другой.

Похоже, вы дважды проверили ансектерию элемента управления, но проверяли ли вы его с помощью: View-> Other Windows-> Document Outline (очень удобный инструмент, который я обнаружил совсем недавно)?

Наконец, пока это не решает напрямую вашу проблему, похоже, у вас очень сложный пользовательский интерфейс, и ваши пользователи могут выиграть, если вы потратите некоторое время, чтобы подумать, можно ли упростить пользовательский интерфейс. Конечно, я не знаю ваших пользователей или цель приложения, и то, что у вас есть, может быть лучшим, но похоже, что пришло время задать этот вопрос.

Удачи.

2
ответ дан 29 November 2019 в 23:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: