Автоматическое ScrollBar в TextBox
Подскажите, пожалуйста, есть ли возможность реализации автоматического появления вертикального scrollbar в textbox в случае если вносимое значение больше по строкам чем textbox. Т.е. текст меньше площади textbox - scrollbar отсутствует. Больше - появляется. Спасибо!
Ответы (2 шт):
Автор решения: Михаил Солодков
→ Ссылка
Можно как то так:
private void textBox2_TextChanged(object sender, EventArgs e)
{
Size sz = TextRenderer.MeasureText(textBox2.Text, textBox2.Font);
if (sz.Height > textBox2.Height)
textBox2.ScrollBars = ScrollBars.Vertical;
else
textBox2.ScrollBars = ScrollBars.None;
}
с горизонталью аналогично и не забудьте textBox2.Multiline = True
Автор решения: Blackmeser
→ Ссылка
public static Size GetTextDimensions(this TextBox textBox)
{
Font font = textBox.Font;
string stringData = textBox.Text;
int width = textBox.Width;
using (Graphics g = textBox.CreateGraphics())
{
SizeF sizeF = g.MeasureString(stringData, font, width);
return new Size((int)Math.Ceiling(sizeF.Width), (int)Math.Ceiling(sizeF.Height));
}
}
textbox.TextChanged += (s, a) =>
{
Size size = GetTextDimensions(textbox);
textbox.ScrollBars = size.Height > textbox.Height ? ScrollBars.Vertical : ScrollBars.None;
};
Идея взята отсюда: https://stackoverflow.com/questions/16424931/how-to-hide-the-vertical-scrollbar-while-the-textbox-is-not-full-and-display-whe/67613513#67613513