2009-05-12 3 views
0

иногда, когда я хочу, чтобы элемент управления winforms был прикреплен также к правой или нижней части родительского контейнера (обычно это UserControl), его границы расширены дальше правую или нижнюю границу родителя, так что часть его больше не видна. даже если якорь установлен вправо.C#/winforms layout: элемент с правой или нижней привязкой исчезает под родительским контейнером

Это происходит только при запуске приложения. пока я нахожусь в дизайнере, все выглядит отлично.

все, что я делаю, устанавливает свойство «Якорь» элемента управления «справа», например.

есть ли способ избежать этого?

на этом скриншоте вы можете видеть групповой бокс «Переход» распространяется на его родителей, распространяется справа.

http://www.deviantsart.com/upload/08ffe2f5e7f4d33044840e68e0619152.png

спасибо!

ответ

1

Если вы используете Anchor, вы не можете использовать Dock (и наоборот).

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

Я бы проверял, является ли родительский элемент вашего контроля фактически тем элементом управления, который вы считаете его (он может быть его родителем :-)). Также проверьте свойство Margin на элементе управления и Padding свойство на родительском контроле. Тогда проверьте AutoSize Недвижимость.

0

Я не совсем уверен, что вы говорите. Можете ли вы изменить предложение?

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

+0

Да, я знаю, это сложно описать, но я отредактирую свое сообщение и перепечатаю его. – clamp

0

Если вы хотите, чтобы состыковать направо, на постоянной высоте: якорь: = верх, правый Если вы хотите, чтобы состыковаться в нижнем правом углу: якорь: = снизу, справа

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

+0

родительский контейнер - это пользовательский UserControl – clamp

-2

Вам, вероятно, придется возиться с z-порядком элементов управления.

2

Проверьте свойства док-станции и привязки родительского элемента (UserControl). Мне кажется, что они не были установлены, и UserControl не элементы в UserControl расширяются за границы.

+0

, спасибо, да, родительский контейнер действительно является проблемой. Извините за недопонимание. он привязан к вершине, слева, справа, а затем эта проблема возникает! – clamp

0

Возможно, привязка в порядке, но проблема заключается в рендеринге. Вы пытались вызвать Invalidate() в своем контейнере? Я помню, что что-то подобное случилось со мной давным-давно с пользовательским контролем. И я разрешил это, заставив перекрасить контроль.

Смежные вопросы