SplitContainer - Что вызывает противоречивое поведение, которое я испытываю, когда ориентация установлена ​​на горизонтальную? - PullRequest
0 голосов
/ 24 октября 2010

Начиная с нуля, в новом проекте, в котором свойства формы Form1 по умолчанию не были изменены, я помещаю SplitContainer в форму и устанавливаю его свойства равными:

Якорь - вверху слева

Док - Заполнить

Ориентация - Вертикальная

Затем я помещаю второй SplitContainer на левую панель (панель 1) первого SplitContainer и снова устанавливаю его свойства на указанные выше, за исключением того, что на этот раз ориентация разделителя установлена ​​на горизонтальный.

Теперь я помещаю два CheckedListBox в верхнюю и нижнюю панели (панели 1 и 2) второго SplitContainer. Свойства обоих CheckedListBoxes установлены на:

Якорь - вверху слева

Док - Заполнить

Теперь я добавляю TextBox на правую панель (панель 2) первого SplitContainer и устанавливаю его свойства:

Якорь - вверху слева

Док - Заполните

Multi-Line - True

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

Нижний край нижнего CheckedListBox также перемещается вверх и вниз при перемещении разделителя, и, как и раньше, это поведение не согласуется с направлением, в котором перемещается разделитель.

Чтобы не переносить изменения свойств компонента из одного эксперимента в другой, я пытался выяснить, что происходит, начиная с полдюжины или около того новых проектов с нуля и пробуя разные вещи, включая изменения в Anchor, Свойства BorderStyle, Dock и Margin, но, к сожалению, я не мудрый: - (

Кто-нибудь имел подобный опыт такого странного поведения и может предложить мне решение? Я мог бы пропустить что-то простое, если так, то что это?

Спасибо за чтение.

Редактировать \ Обновить - После дальнейших экспериментов я смог определить, что нежелательное поведение, которое я испытываю, как-то связано с CheckedListBoxes - я заменил оба на многострочные текстовые поля, чьи свойства «Anchor» и «Dock» были установлены на «Top, Left» и « Заполните "соответственно, и после запуска приложения ошибочное поведение больше не возникает - как вертикальный, так и горизонтальный разделители работают правильно.

1 Ответ

2 голосов
/ 24 октября 2010

Установите для свойства IntegralHeight списков значение False, чтобы им было разрешено изменять размеры в соответствии с размером панели.

...