use*_*289 26 c# textbox resize
我正在编写一个程序,用户应该能够在文本框中编写文本.我希望文本框能够自行调整大小,因此它适合内容.我尝试过以下方法:
private void textBoxTitle_TextChanged(object sender, TextChangedEventArgs e)
{
System.Drawing.Font myFont = new System.Drawing.Font("Verdana", 8);
System.Drawing.SizeF mySize = e.Graphics.MeasureString("This is a test", myFont);
this.textBoxTitle.Width = (int)Math.Round(mySize.Width, 0);
}
Run Code Online (Sandbox Code Playgroud)
我得到一个错误,说Graphics不适用于TextChangedEventArgs.还有另一种方法可以调整文本框的大小吗?
Sai*_*ala 60
您应该尝试类似下面的代码.它对我有用.
private void textBox1_TextChanged(object sender, EventArgs e)
{
Size size = TextRenderer.MeasureText(textBox1.Text, textBox1.Font);
textBox1.Width = size.Width;
textBox1.Height = size.Height;
}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅TextRenderer.MeasureText()
我正在添加这个答案,因为我没有看到fixed width任何其他文本框的讨论方面.如果文本框的宽度固定,并且只想调整其高度,则可以执行以下操作:
像这样的东西给出了文本的高度,就像它在多行文字包装文本框中的绘制方式一样:
SizeF MessageSize = MyTextBoxControl.CreateGraphics()
.MeasureString(MyTextBoxControl.Text,
MyTextBoxControl.Font,
MyTextBoxControl.Width,
new StringFormat(0));
Run Code Online (Sandbox Code Playgroud)
我不确定StringFormat应该是什么,但这些值StringFormatFlags似乎不适用于默认TextBox化妆.
现在随MessageSize.Height你知道文本框中文本的高度.
小智 6
我遇到了同样的问题,我以更简单的方式解决了它。
我使用了 Label 控件的 AutoSize 属性。我在表单中添加了一个不可见的标签,将其 AutoSize 属性设置为 True。当我需要更改 TextBox 的大小时,我使用以下代码:
MyLabel.Text = MyTextBox.Text;
MyTextBox.Size = MyLabel.Size;
Run Code Online (Sandbox Code Playgroud)
我设置了标签的最大和最小尺寸以获得更好的结果。玩得开心
| 归档时间: |
|
| 查看次数: |
72570 次 |
| 最近记录: |