我可以找到大量的示例来调整文本框的大小以适应它的内容,但不是相反。我有一个WinForm'弹出窗口',它是一个小尺寸,包含一个壁纸缩略图和一个文本框,将保存壁纸标题。有时,标题可能很短,或者很长时间从表单的末尾开始:
表单填充了从另一个方法传递的信息:
this.BringToFront();
this.txtWallpaperTitle.Text = title;
this.lnkWallpaper.Text = "http://www.reddit.com/" + threadid;
Bitmap img = new Bitmap(Properties.Settings.Default.currentWallpaperFile);
this.imgWallpaper.BackgroundImage = img;
this.imgWallpaper.BackgroundImageLayout = ImageLayout.Stretch;
目前,TextBox
文本sdize是通过设计器设置的。有没有办法自动调整文本大小以使其适合TextBox
控件?
答案 0 :(得分:0)
也许以这种方式处理TextChanged
Event
或类似地解决它。
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text != "".Trim())
{
int w = TextRenderer.MeasureText(textBox1.Text, textBox1.Font).Width;
int h = TextRenderer.MeasureText(textBox1.Text, textBox1.Font).Height;
int sizeContent = w * h;
int sizeTb = (textBox1.Width * textBox1.Height);
if (sizeContent < sizeTb)
{
while (sizeContent < sizeTb)
{
textBox1.Font = new Font(textBox1.Font.FontFamily, textBox1.Font.SizeInPoints + 1);
w = TextRenderer.MeasureText(textBox1.Text, textBox1.Font).Width;
h = TextRenderer.MeasureText(textBox1.Text, textBox1.Font).Height;
sizeContent = w * h;
}
}
if (sizeContent >= sizeTb)
{
while (sizeContent >= sizeTb)
{
textBox1.Font = new Font(textBox1.Font.FontFamily, textBox1.Font.SizeInPoints - 1);
w = TextRenderer.MeasureText(textBox1.Text, textBox1.Font).Width;
h = TextRenderer.MeasureText(textBox1.Text, textBox1.Font).Height;
sizeContent = w * h;
}
}
}
}