2015-05-14 50 views
-2

如果我第一次输入10位数字需要10位数字,但如果我清除textbox1使用退格键并再次输入它只需要9位数字。它应该需要10位数字,因为我已经设置textbox1.maxlength = 9意味着它应该计数10位数字(0到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; 
     } 
} 
+0

如果你将它设置为9它将数到10只,如果的MaxLength设定为9,它会高达数仅9个数字。这意味着0到8 –

+0

'MaxLength'与计数数字无关。这是关于字符串的长度,你的问题不清楚 – Sayse

+2

很少有事情要注意:1)如果MaxLength是10之前,你键入10“数字”,那么你会减少到9这样的编辑后。 2)你没有使用“数字”,但使用“代码单元”。如果用户输入“è”(例如),它将消耗两个System.Char(.NET字符串长度的measure_的_unit)。 3)KeyPress处理将与许多/大部分IME混淆。 –

回答

0

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

+1

节省一些能量。养成阅读评论的好习惯。 :) –

+2

这应该是一个评论,它不能解决问题,但我不知道他们的问题到底是什么 – Sayse

+0

雅各布根据你一个MaxLength的9有从0- 8。而不是当我第一次输入数字时需要10位数字 – Mahaveer

0

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

你的解决办法是的MaxLength设置为10

+1

这只是抄袭雅各的回答 – Sayse

+0

@Sayse对不起,我当时在写它,所以页面没有刷新,我看到他的回答 –

+0

它几乎是一个单词复制.. – Sayse