У меня странная проблема в отношении автоматического определения размера панели в пользовательском элементе управления. Эта панель закреплена на всех четырех сторонах пользовательского элемента управления. Но привязка не всегда работает так, как должна:
Если пользовательский элемент управления изменен, изменив размер формы, правый и нижний якоря не работают. Но если элемент управления изменяется с помощью сплиттера, который находится в форме, он работает правильно. Все остальные элементы управления, на которые также влияет изменение размера, работают правильно, эта панель не будет работать.
Я не вижу разницы между изменением размера сплиттера и формой.
Настройка размера вручную в OnResize для UserControl работает только в том случае, если изменение размера производится путем перемещения разделителя. Если изменение размера происходит путем изменения размера формы, высота и ширина панели не будут изменяться на новые значения.
Изменить: сделать это более понятным: пользовательский элемент управления добавляется в TabPage и устанавливается в Dock = DockType.Fill.
Edit2: Сделать сложнее: это иерархия, в которой используется элемент управления: Форма содержит сплиттер с двумя элементами управления (A и B). (B) содержит пользовательский элемент управления (C) с splitContainer. Разбитый контейнер- > панель1 в (C) содержит tabcontrol (D). Этот tabcontrol (D) содержит пользовательский элемент управления (E) (на вкладке). Этот пользовательский элемент управления (E) имеет разделительный контейнер (F), в котором размещается другое пользовательское управление с помощью tabControl (G). В этом tabcontrol (G) есть закладки, и на этих страницах размещается описанный пользовательский элемент управления (H).
Если я поместил элемент управления (H) прямо на панель в разделительном контейнере (C), все будет работать нормально. Поскольку все элементы управления, которые добавляются в splitcontainer или tabbook, устанавливаются в docktype = fill, я не вижу, почему последний элемент управления имеет эти проблемы.
Есть ли какое-либо ограничение в структуре Windows Forms, которое ограничивает количество дочерних элементов управления?
Изменить: я загрузил TestApplication, с помощью которого вы можете воспроизвести эту проблему. http://rapidshare.de/files/49092516/TestApplication.zip.html Это происходит только под Vista. Win XP и 7 работают правильно... Если вы измените размер формы, текстовый блок с кнопкой "..." не изменит размер, но если вы измените размер с помощью вертикального splitContainer, он будет работать.