【发布时间】:2014-08-22 11:29:05
【问题描述】:
我正在使用 winforms 应用程序,我想设置文本框的宽度,该宽度将显示字符直到最大长度,简而言之,类似于 width = maxlength。有任何预定义的属性吗?还是我们必须手动计算?
//我正在寻找这种类型的逻辑
private void Form1_Load(object sender, EventArgs e)
{
//sample project
textBox2.Width = textBox2.MaxLength;
textBox3.Width = textBox3.MaxLength;
textBox4.Width = textBox4.MaxLength;
}
【问题讨论】:
-
请展示你的作品。你试过什么?什么不适合你?你有没有看过文档? msdn.microsoft.com/en-us/library/… ?
-
单位不匹配:宽度以像素为单位,最大长度以字符为单位。所以你需要使用例如测量字体Graphics.MeasureString.. 最适合 Consolas 等固定字体。
-
是的,我遇到了 MeasureString ,但它需要文本作为第一个参数。我只想在初始阶段设置大小..
-
@TaW 的评论可能应该作为答案发布,但只是为了扩展它,如果您希望文本框在您输入时动态调整大小,您需要使用 TextChanged 事件你的文本框来调整它的大小。
-
@AdrianoSantros 在知道框中的文本内容之前,您不知道需要什么宽度。您可能会在所使用的字体中找到最宽的字符并将其用作最坏的情况。 (尽管您无法确定用户正在使用什么字体,除非您强制使用特定字体 - 我会不惜一切代价避免)。