2013-01-13 36 views
-1

我想强制使用我的程序的人在c#文本标签中只输入数字。我怎样才能做到这一点? 例如: 数方程:(他应该只输入一个数字)如何验证文本输入以仅包含数字?

此代码责成他210之间输入一个号码,但我需要的字母

代码
if (int.Parse(txt1.Text) < 2 || int.Parse(txt1.Text) > 10) 
    { 
    l6.ForeColor = System.Drawing.Color.Red; 
    l6.Text = "Svp choisir un nombre entre 2 et 10 ... Soyez Logique!"; 
    } 
+0

如果用户输入一个字母,TryParse不会抛出异常。 – PhoenixReborn

回答

0
if (txt1.Text.Trim().Length > 0) 
{ 
    // Parse the value only once as it can be quite performance expensive. 
    Int32 value = Int32.Parse(txt1.Text) 

    if ((value >= 2) && (value <= 10)) 
    { 
     l6.ForeColor = Color.Red; 
     l6.Text = "Svp choisir un nombre entre 2 et 10 ... Soyez Logique!"; 

     // Clear the text... 
     txt1.Text = ""; 
    } 
    else 
    { 
     // Your code here... 
    } 
} 

但是,恕我直言,的TryParse甚至更好,因为它可以处理错误的字符串格式,以更好的方式:

if (txt1.Text.Trim().Length > 0) 
{ 
    Int32 value; 

    if (!Int32.TryParse(txt1.Text, out value)) 
    { 
     l6.ForeColor = Color.Red; 
     l6.Text = "Svp choisir un nombre entre 2 et 10 ... Soyez Logique!"; 

     // Clear the text... 
     txt1.Text = ""; 
    } 
    else 
    { 
     // Your code here... 
    } 
} 
+0

感谢它的工作:) – Phoenician

0

做的GUI你用? 使用的WinForms有两种方式浮现在脑海中:

  1. 我建议:使用NumericUpDown控件,而不是一个文本框。这样用户只能输入数字并有很好的向上/向下箭头来改变数值。另外你可以处理光标键。

  2. 实施一个Validating事件处理程序。

0

检查各种方法在文本框中插入文本,以避免非数字字符不是一件容易的事,并且通常不会失败。例如,从剪贴板粘贴的文字是什么?,Backspace,Delete,Left,Right箭头键?

在我看来,最好遵循不同的方法。
使用验证事件并让用户键入或粘贴他想要的任何内容。在验证事件做你检查,并通知用户或添加特殊ErrorProvider控件的信号错误:

private void l6_Validating(object sender, CancelEventArgs e) 
    { 
     int isNumber = 0; 
     if (l6.Text.Trim().Length > 0) 
     { 
      if (!int.TryParse(l6.Text, out isNumber)) 
      { 
       e.Cancel = true; 
       errorProvider1.SetError(l6, "Svp choisir un nombre entre 2 et 10 ...";); 
      } 
      else 
      { 
       errorProvider1.SetError(l6, ""); 
      } 
     } 
    } 
} 
1

把这个(或这方面的一个变化,根据你想让用户输入的内容)中文本框按键事件,所以基本上你会在这个文本管理按键.. 添加System.Media库,如果用户输入错误的密钥使用哔哔声,或从代码中删除它...

  if ((e.KeyChar >= '0') && (e.KeyChar <= '9') && (txt1.Text.Length < 10)) 
     { 

     } 
     else if (e.KeyChar == 0x08) 
     { 
      //BACKSPACE CHAR 
     } 
     else if (txt1.SelectionLength > 0) 
     { 
      //IF TEXT SELECTED -> LET IT OVERRIDE 
     } 
     else 
     { 
      e.Handled = true; 
      SystemSounds.Beep.Play(); 
     }