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

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

Я вижу, что в перечислении стиля док-станции есть значения для None, Top, Bottom, Right, Left и Fill...

Как я могу установить для нижнего правого ???


person Nick    schedule 24.05.2012    source источник
comment
О каком контроле мы здесь имеем дело? Пожалуйста, и родитель, и ребенок.   -  person General Grey    schedule 24.05.2012


Ответы (5)


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

Если вы хотите оставить его внизу и справа, закрепите его. Удалите левый и верхний якоря и добавьте нижний и правый якоря. Ваш контроль будет держать там!

** РЕДАКТИРОВАТЬ ** Согласно комментарию OP, он должен быть внизу, занимать всю ширину и иметь фиксированную высоту. то вы должны предпринять следующие шаги:

Чтобы держать его в порядке, вам нужно как минимум 2 элемента управления:

  • Тот, что внизу: пристыкуйте его к низу и установите его высоту.
  • Другой, который использует стиль стыковки Fill. Это заставляет его занимать все пространство, не занятое нижним элементом управления.

Если у вас возникли проблемы с его настройкой, используйте окно макета (надеюсь, это название на английском языке. Мой VS локализован), чтобы перемещать их, пока оно не заработает. Иногда его стыковка немного неприятна, и единственный способ заставить его работать так, как вам нравится, - это изменить порядок и вложение элементов управления с помощью этого окна макета.

person JotaBe    schedule 24.05.2012
comment
Это именно то, что я хочу. мне нужно, чтобы дочерний элемент управления соответствовал высоте и ширине родительской формы... если я установлю стиль привязки в правом нижнем углу, я не смогу увидеть элемент управления, я предполагаю, что он выходит за пределы родительского элемента управления.... - person Nick; 24.05.2012
comment
Пожалуйста, определите его точнее. Вы хотите, чтобы он был внизу, занимая всю ширину, или справа, занимая всю высоту? если вы поможете мне понять это, я улучшу свой ответ. - person JotaBe; 24.05.2012
comment
Я считаю, что JotaBe прав, вам нужно установить якорь в положение «Внизу справа» и расположить его именно там, где вы хотите, чтобы он оставался, когда вы изменяете размер формы, он останется относительно нижнего правого угла. - person General Grey; 24.05.2012
comment
я хочу, чтобы он был справа, принимая всю ширину родительского элемента управления, но должен иметь возможность определять высоту... - person Nick; 24.05.2012
comment
Хорошо, тогда пристыкуйтесь к низу, это займет всю ширину родительского элемента управления, чтобы определить высоту. Что такое элемент управления, который вы добавляете, хотя вам, возможно, придется включить AutoSize = false - person General Grey; 24.05.2012
comment
@JotaBE Его элемент управления - это метка, стыковка по нижнему краю, выравнивание по правому краю. Авторазмер false, я все равно думаю, что это метка, так что это сбивает с толку, когда люди не дают вам всю необходимую информацию. - person General Grey; 24.05.2012

Используйте AnchorStyles:

yourComponent.Anchor = ((System.Windows.Forms.AnchorStyles)
                       ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
person sebi    schedule 24.05.2012

Из документации MSDNn для Control.Dock:

Элемент управления можно прикрепить к одному краю родительского контейнера или ко всем краям и заполнить родительский контейнер.

Таким образом, вы не можете состыковаться с двумя краями - я на самом деле не уверен, что вы имеете в виду.

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

person raveturned    schedule 24.05.2012
comment
Хорошо.. спасибо за информацию, позвольте мне закрепить нижнюю часть элемента управления и выровнять поле метки вправо... - person Nick; 24.05.2012

попробуйте установить Dock на Bottom. В зависимости от вашего управления вам может потребоваться отключить авторазмер, например, метку

person General Grey    schedule 24.05.2012

Чтобы «пристыковаться» в правом нижнем углу, нужно

  1. Закрепите ControlA с правой стороны родительского элемента ControlB
  2. Установите для параметра Верхнее заполнение элемента ControlA значение ControlA.Padding = new Padding(0, ControlB.Height - nTopPadding, 0, 0);.

nTopPadding может быть таким, каким вам нужно. Для текстовых полей, меток и т. п. лучше всего подходит ControlA.Font.Height.

Это также работает, когда AutoSize = true. Вам нужно будет только обновить отступы по мере необходимости.

person DCOPTimDowd    schedule 26.12.2018