C# 如何将文本框中条目的长度限制为其宽度
c#: 默认情况下,文本框接受n个条目 我想限制条目的宽度C# 如何将文本框中条目的长度限制为其宽度,c#,textbox,C#,Textbox,c#: 默认情况下,文本框接受n个条目 我想限制条目的宽度 文本框中是否有任何属性,我可以通过它来实现这一点,否,要做到这一点,恐怕您必须通过文本框宽度手动计算它们可以输入的最大字符数。您还必须考虑字体和字体大小。不,要做到这一点,您必须手动计算文本框宽度可以输入的最大字符数。您还必须考虑字体和字体大小,默认情况下它只接受字符的32767 您可以在textbox属性 希望您使用的是windows窗体默认设置,它只接受字符数32767 您可以在textbox属性 希望您使用的是windows窗体,
文本框中是否有任何属性,我可以通过它来实现这一点,否,要做到这一点,恐怕您必须通过文本框宽度手动计算它们可以输入的最大字符数。您还必须考虑字体和字体大小。不,要做到这一点,您必须手动计算文本框宽度可以输入的最大字符数。您还必须考虑字体和字体大小,默认情况下它只接受字符的32767 您可以在
textbox属性
希望您使用的是windows窗体默认设置,它只接受字符数
32767
您可以在textbox属性
希望您使用的是windows窗体,您可以计算要绘制的文本的宽度,如果超过文本框宽度,则返回
您可以找到一个很好的例子。您可以计算要绘制的文本的宽度,如果它超过文本框的宽度,则返回
您可以找到一个很好的例子。假设使用WinForms,请尝试以下方法:
private bool textExceedsWidth;
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
textExceedsWidth = false;
if (e.KeyCode == Keys.Back)
return;
Size textSize = TextRenderer.MeasureText(textBox1.Text, textBox1.Font);
if (textBox1.Width < textSize.Width)
textExceedsWith = true;
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (textExceedsWidth)
e.Handled = true;
}
private bool textextextexexceedswidth;
私有void textBox1\u KeyDown(对象发送方,KeyEventArgs e)
{
textexExceedswidth=false;
if(e.KeyCode==Keys.Back)
返回;
Size Text Size=TextRenderer.MeasureText(textBox1.Text,textBox1.Font);
if(textBox1.Width
假设使用WinForms,请尝试以下操作:
private bool textExceedsWidth;
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
textExceedsWidth = false;
if (e.KeyCode == Keys.Back)
return;
Size textSize = TextRenderer.MeasureText(textBox1.Text, textBox1.Font);
if (textBox1.Width < textSize.Width)
textExceedsWith = true;
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (textExceedsWidth)
e.Handled = true;
}
private bool textextextexexceedswidth;
私有void textBox1\u KeyDown(对象发送方,KeyEventArgs e)
{
textexExceedswidth=false;
if(e.KeyCode==Keys.Back)
返回;
Size Text Size=TextRenderer.MeasureText(textBox1.Text,textBox1.Font);
if(textBox1.Width
我知道这个问题有点老了,但对任何人来说,这是乔治答案的扩展。它与Ctrl+v、上下文菜单粘贴和键盘输入一起工作
private string oldText;
private void txtDescrip_KeyPress(object sender, KeyPressEventArgs e)
{
oldText = txtDescrip.Text;
}
private void txtDescrip_TextChanged(object sender, EventArgs e)
{
Size textSize = TextRenderer.MeasureText(txtDescrip.Text, txtDescrip.Font);
if (textSize.Width > txtDescrip.Width)//better spacing txtDescrip.Width - 4
txtDescrip.Text = oldText;
else
oldText = txtDescrip.Text;
}
我知道这个问题有点老了,但对任何一个看这个问题的人来说,这是乔治答案的扩展。它与Ctrl+v、上下文菜单粘贴和键盘输入一起工作
private string oldText;
private void txtDescrip_KeyPress(object sender, KeyPressEventArgs e)
{
oldText = txtDescrip.Text;
}
private void txtDescrip_TextChanged(object sender, EventArgs e)
{
Size textSize = TextRenderer.MeasureText(txtDescrip.Text, txtDescrip.Font);
if (textSize.Width > txtDescrip.Width)//better spacing txtDescrip.Width - 4
txtDescrip.Text = oldText;
else
oldText = txtDescrip.Text;
}
除非你使用固定宽度的字体,否则你为什么要这样做?在比例宽度字体中,字母i比字母W窄得多。我们说的是ASP.NET、WPF还是WinForms?除非使用固定宽度字体,否则为什么要这样做?在比例宽度字体中,字母i比字母W窄得多。我们说的是ASP.NET、WPF还是WinForms?