2014-03-14 47 views
1

我有一个Windows窗体上的文本框,我想在这个textbox.i使用下面的C#代码为验证号码INTEGER形成问题

private void ChildAge_TextChanged(object sender, EventArgs e) 
{ 
    int i; 
    if (!int.TryParse(ChildAge.Text, out i)) 
    { 
     MessageBox.Show("Plaese enter a valid Age"); 
    }  
} 

,它正在被插入只有数字但问题是,显示消息,当我Backspace键内容和文本框中成为,在这种情况下也经过此消息框,再次显示

+0

我假设你的意思是说'ChildAge.Text'变为null?不是真正的“ChildAge”? – Arran

+0

是的。第一次没有问题,只有当单击退格和所有内容从文本框中删除时,这个msgbox显示 – neel

+2

如果(!string.isNullEmpty(ChildAge.Text)) if(!int.TryParse(ChildAge .Text,out i)) MessageBox.Show(“Plaese enter a valid Age”); }} ERM –

回答

4

做一个小测试像波纹管:

int i = 0; 
if(!string.IsNullOrEmpty(ChildAge.Text) && 
    !int.TryParse(ChildAge.Text, out i) 
) 
{ 
    MessageBox.Show("Enter Valid Age"); 
} 
+2

可以使用'&&'保存缩进 – Jodrell

0

试试以下。这效果更好。

bool m_BackPressed = false; 
    private void ChildAge_TextChanged(object sender, EventArgs e) 
    { 
     int i; 
     if (!m_BackPressed)    
     { 
      if (!int.TryParse(ChildAge.Text, out i)) 
      { 
       MessageBox.Show("Plaese enter a valid Age"); 
      } 
     } 


    } 

    private void ChildAge_KeyPress(object sender, KeyPressEventArgs e) 
    { 

     m_BackPressed = (e.KeyChar.Equals((char)Keys.Back)) ? true : false; 
    } 
+0

是的。但是如果用户输入多个字符,然后开始按退格删除文本框中的所有字符会怎么样? –