У меня есть WinForms-приложение, где я хочу, чтобы добавить UserControls динамически стыковки к вершине:Autosizing панели по содержанию текста
this.Controls.Clear();
this.Controls.Add(myCustomControl(){Title="first", content="first text", Dock=DockStyle.Top});
this.Controls.Add(myCustomControl(){Title="second", content="very long text, where......", Dock=DockStyle.Top});
Теперь myCostumControl
[YELLOW] является UserControl со следующим содержанием:
TopTitle [PINK]: A Label, docked to the top
BottomContent [GREEN]: A Panel, Fills out the rest of the Control below the TopTitle (Dockstyle Fill)
TextContent [BLUE]: A multiline Textbox, docked (fill) within the Panel.
Так это выглядит следующим образом:
Теперь мне нужно добиться того, что высота из myCustomControl соответствует текстовому содержимому «TextContent» - TextBox, поэтому я могу складывать несколько элементов управления. Поэтому, если в нем есть только «Hello World», высота должна быть небольшой, если я вложу в нее EULA Windows, она должна быть очень длинной.
Я уже пробовал испортить все «AutoSize» -properties. Я мог бы набраться сил, но текстовое поле либо полностью исчезло, либо не было никакого эффекта.
Я также попытался изменить размеры Textbox по изменению:
Size size = TextRenderer.MeasureText(txtContent.Text, txtContent.Font);
txtContent.Height = size.Height;
Нет успеха, либо
Очевидно, что вы не можете использовать 'DockStyle.Fill' и' AutoSize' одновременно для одного и того же элемента управления. – Phil1970
Я также пробовал с DockStyle.Top для TextBox. Не работает, либо –
Кстати, 'TextBox' не имеет никакого свойства' AutoSize' ... Итак, как вы его автоматизируете? Пользовательский код? – Phil1970