[英]How to implement auto resizable text that fits a visible part of a TextBox?
我使用 VS WinForms App (.net core 6.0) 制作了一个基本功能计算器,我想修复设计问题。
问题是,当输入的符号长度超过 20 个符号时,您无法看到整个表达式。 这就是为什么我希望程序自动调整字体大小。
源代码: https://github.com/yanu1ya/Calculator
起初我想在每次触发文本框的 TextChanged 事件时检查文本框的长度,并根据该值设置一些字体大小。 不幸的是,不同的符号具有不同的宽度(“9”比“”宽一点,至少在我的应用程序中是这样),因此为文本框的特定长度设置特定的字体大小对我来说效果不佳。 下一个屏幕截图显示不同的表达式长度为 18 和 22 个符号,但宽度相同: https://imgur.com/a/tCLNzcr
当文本框的内容发生变化时,您可以使用 MeasureText 来查看文本是否会比框的客户区更宽。 如果是这样,您可以减小字体大小。 请注意,下面只是一个简单粗暴的示例,您可能希望将最小字体大小限制在某个合理的值。
private void textBox1_TextChanged(object sender, EventArgs e)
{
using(var graphics = textBox1.CreateGraphics())
{
var size = TextRenderer.MeasureText(graphics, textBox1.Text, textBox1.Font);
if(size.Width > textBox1.ClientRectangle.Width)
{
textBox1.Font = new Font(textBox1.Font.FontFamily, textBox1.Font.Size-1);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.