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
}

問題は、メソッドからのブレークだけでなく、フォーム全体を返すことです。私はこれで生きることができましたが、それは最善の解決策ではありません。これを解決する他の方法はありますか?

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

代わりに、keypressで数値検証を行う必要があります。この方法では、コードが「else」に入ることはなく、同時に検証を処理するためのより良い方法です。

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 に答える