我已将WinForms TextBox
控件更改为没有边框。
当我这样做时,框中的文本底部像素行被切断。
热门: BorderStyle.Fixed3D
(默认)。 底部: BorderStyle.None
您可以看到未边框文本框中的最后一位文字被截断:
我如何说服TextBox
(谁的高度无法改变),它需要更高?
答案 0 :(得分:1)
AutoSize
属性就在那里,只是从TextBox
继承而且你可以到达这个属性:
public class TextBoxEx : TextBox {
public TextBoxEx() {
base.AutoSize = false;
}
}
答案 1 :(得分:0)
这似乎可以解决问题:
public Form2()
{
InitializeComponent();
textBox1.Multiline = true;
textBox1.MinimumSize = new Size(0, 30);
textBox1.Size = new Size(textBox1.Size.Width, 30);
textBox1.Multiline = false;
}
答案 2 :(得分:0)
您可以在表单中执行此操作:
private void RefreshHeight(TextBox textbox)
{
textbox.Multiline = true;
Size s = TextRenderer.MeasureText(textbox.Text, textbox.Font, Size.Empty, TextFormatFlags.TextBoxControl);
textbox.MinimumSize = new Size(0, s.Height + 1);
textbox.Multiline = false;
}
然后你说RefreshHeight(textbox1);
Multiline
更改将强制文本框“接受”新尺寸
答案 3 :(得分:-1)
您也可以在Visual Studio Designer中修复此问题。
更改文本框的最小尺寸属性的高度。更改为multiline = true,然后返回false。文本框将调整大小并保持修复。
无需更改代码。