Получение пользовательского элемента управления для заполнения своего контейнера

2

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

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

  • 0
    Похоже, источником проблемы является то, что добавление элементов управления в FlowLayoutPanel, для которого FlowDirection установлено значение TopDown, приведет к их исчезновению, если для свойства Dock установлено значение «Top» или для свойства Anchor установлено значение «AnchorStyles.Left | AnchorStyles.Right. ».
Теги:
winforms
user-controls
size

3 ответа

4

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

        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] тем, что имя пользователя UserControl вы используете.

2

Просто установите для свойства Dock User Control значение "Top"...

UserControl.Dock = System.Windows.Forms.DockStyle.Top;
  • 0
    Установка свойства Dock в Top в конструкторе пользовательского элемента управления делает их невидимыми - все, что я получаю, это панель макета зеленого потока.
1

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню