0

我有一个这样的事件处理方法:

private void btnConfirm_Click(object sender, EventArgs e)
{
//Some code
if (int.TryParse(tboxPhone.Text, out n))
    {
     korisnik.Phone = n;
     command.Parameters.AddWithValue("@phone", korisnik.Phone);
    }
    else
    {
     MessageBox.Show("Error. Numerals only!");
     return;
    }
//Some other code if condition is fulfilled
}

问题是 return 不仅打破了方法,而且还打破了整个形式。我可以忍受这个,但这不是最好的解决方案。有没有其他方法可以解决这个问题?

4

3 回答 3

0

完全摆脱return例如

private void btnConfirm_Click(object sender, EventArgs e) 
{ 
    //Some code 
    if (int.TryParse(tboxPhone.Text, out n)) 
    { 
        korisnik.Telefon = n; 
        command.Parameters.AddWithValue("@phone", korisnik.Telefon); 
        //Some other code if condition is fulfilled 
    } 
    else 
    { 
        MessageBox.Show("Error. Numerals only!");  
    } 
} 
于 2012-08-22T13:30:53.423 回答
0

您应该改为在按键上进行数字验证。这样您的代码将永远不会进入“其他”,这是同时处理您的验证的更好方法。

private void tboxPhone_KeyPress(object sender, KeyPressEventArgs e)
{
    if (!char.IsControl(e.KeyChar) 
        && !char.IsDigit(e.KeyChar) 
        && e.KeyChar != '.')
    {
        e.Handled = true;
    }
}

正则表达式也是一种方式:

private void tboxPhone_KeyPress(object sender, KeyPressEventArgs e)
{
     if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), "\\d+"))
          e.Handled = true;
}

希望这可以帮助。

于 2012-08-22T13:31:13.753 回答
0

我刚看到有什么问题。if语句在try-catch块内,当它返回时,它直接进入finally块。

我刚刚Close();finally块转移,现在它工作得很好。

于 2012-08-22T13:36:43.190 回答