Получение пользовательского элемента управления для заполнения своего контейнера - PullRequest
2 голосов
/ 17 июня 2009

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

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

Ответы [ 3 ]

4 голосов
/ 01 июля 2009

Я думаю, что проблема в том, что вы на самом деле не хотите, чтобы элементы управления "Flow", вы просто хотите, чтобы они занимали самую верхнюю позицию в вашем элементе управления хостом. Вы можете получить нужные результаты, просто используя вместо этого обычный элемент управления Panel. Просто добавьте дочерние пользовательские элементы управления в коллекцию Controls контейнера и затем установите Dock добавленного пользовательского элемента управления на «Top».

        ChildDisplay dsp1 = new ChildDisplay();
        pnlHost.Controls.Add(dsp1);
        dsp1.Dock = DockStyle.Top;

        ChildDisplay dsp2 = new ChildDisplay();
        pnlHost.Controls.Add(dsp2);
        dsp2.Dock = DockStyle.Top;

        ChildDisplay dsp3 = new ChildDisplay();
        pnlHost.Controls.Add(dsp3);
        dsp3.Dock = DockStyle.Top;

Примечание. Замените [ChildDisplay] именем используемого вами пользовательского элемента управления.

2 голосов
/ 17 июня 2009

Просто установите свойство Dock пользовательского элемента управления на «Top» ...

UserControl.Dock = System.Windows.Forms.DockStyle.Top;
1 голос
/ 17 июня 2009

Позиционирование и наложение элементов управления может быть сложным время от времени. Убедитесь, что свойство Dock элемента управления зеленым потоком имеет значение Fill. После этого начните размещать элементы управления метками и начинайте позиционирование. Вы можете установить свойство Dock в Top, если хотите, но я не большой поклонник этого в большинстве ситуаций. Я бы сказал, что при настройке положения элементов управления, особенно при использовании свойства Dock, следует помнить, что порядок имеет значение. Если вы не видите элемент управления (то есть ... кажется, что он скрыт за другими элементами управления), попробуйте изменить порядок их добавления в родительский элемент (в данном случае это панель управления потоком). Если вы используете конструктор в VS, вы можете сделать это, щелкнув правой кнопкой мыши и используя команды «Отправить сверху / снизу» (очень полезно при использовании свойства Dock, кроме того, вы также можете увидеть, какие элементы управления размещены в выбранной области ).

Кроме того, на мой взгляд, часто пропускаемый вариант - правильное использование Control.Anchor . Я бы посоветовал взглянуть на это.

...