Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按键时文本框工作不正常_C# - Fatal编程技术网

C# 按键时文本框工作不正常

C# 按键时文本框工作不正常,c#,C#,如果我第一次输入10位数字,则需要10位数字,但如果我使用退格键清除textbox1并再次输入,则只需要9位数字。它应该是10位数,因为我已经设置了textbox1。maxlength=9意味着它应该是10位数(0到9) MaxLength是字符的文字量,即MaxLength为9的索引范围为0-8。将MaxLength设置为10。MaxLength用于计算字符串中字符的文字量,因此将MaxLength设置为9将计0-8,因为0计为文字字符 您的解决方案是将MaxLength设置为10。只有当Ma

如果我第一次输入10位数字,则需要10位数字,但如果我使用退格键清除textbox1并再次输入,则只需要9位数字。它应该是10位数,因为我已经设置了textbox1。maxlength=9意味着它应该是10位数(0到9)


MaxLength是字符的文字量,即MaxLength为9的索引范围为0-8。将MaxLength设置为10。

MaxLength用于计算字符串中字符的文字量,因此将MaxLength设置为9将计0-8,因为0计为文字字符


您的解决方案是将MaxLength设置为10。

只有当MaxLength设置为9时,它才会计为10。如果将其设置为9,则最多只能计算9位数字。这意味着0到8
MaxLength
与数字计数无关。这与字符串的长度有关,您的问题不明确。有几点需要注意:1)如果在键入10个“数字”之前MaxLength为10,则在进行此类编辑后,将其减少到9。2) 您使用的不是“数字”,而是“代码单位”。如果用户输入“è”(仅举个例子),它将使用两个System.Char(度量.NET字符串长度的单位)。3) 按键操作会干扰很多/大多数时间。为什么不使用
MaskedTextBox
而不是普通的
TextBox
?@HarveySpecter我猜你想写“只有当MaxLength设置为10时,它才会计数到10。如果设置为9,它最多只能计数到9个字符。这意味着0到8”可以节省一些精力。养成阅读评论的好习惯。:)这真的应该是一个评论,它不能解决op的“问题”,但我不知道他们的问题到底是什么Jacob根据你的说法,MaxLength为9的数字是0-8。比我第一次输入数字时所需的10位数还要多。@Mahaveer因为您在错误的位置设置了MaxLength,所以请在文本框的属性中设置MaxLength。这只是Jacob的抄袭answer@Sayse我很抱歉,我当时正在写,所以页面没有刷新,我看不到他的answer@Sayse这远远不是逐字逐句的复制。。。不要仓促行事,原因很相似,因为这是问题的答案,我们都解释了MaxLength的功能,并解释了为什么将它设置为9会计算它的作用。
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
 if (e.KeyChar != '\b' && textBox1.Text.Trim().Length > 9)
        {

            e.Handled = true;
            MessageBox.Show("You can't enter more than ten digits...");
            textBox1.MaxLength = 9;
        }
}