2017-04-18 1 views
-2

私はここに私のコードです 私は1つのテキストフィールドから別のテキストフィールドに値を減算し、3番目のテキストフィールドに結果を表示したいが、問題はエラー入力文字列フォーマットそのような正しい形式ではなかった 私は何をすべきですか?あるテキストフィールドから別のテキストフィールドへの減算エラー

私は私のコードが正しいと思うが、私はあなたがテキストボックスを検証する必要が

private void txt_pay2_TextChanged(object sender, EventArgs e) 
{ 
    try 
    { 
     if (!string.IsNullOrEmpty(txt_pay2.Text)) 
     { 
      txt_dues2.Text = (Convert.ToInt32(pay_dues.Text) - Convert.ToInt32(txt_pay2.Text)).ToString(); 

     } 
     else if (String.IsNullOrEmpty(txt_pay2.Text)) 
     { 
      MessageBox.Show("Enter A Amount Please !!"); 
     } 
    } 
    catch (Exception Ex) 
    { 

     MessageBox.Show(Ex.Message); 
    } 
} 
+2

をあなたは 'pay_dues.Text'と' txt_pay2.Text'に数値を入れていましたか? –

+0

あなたのtxtボックスに何を入れるかの例を表示してください。 – swdev95

+0

はい数値を入力します。 –

答えて

0

が数値を持っている、とスペースがある場合には、それらの値をトリミング何が起こっているのか分かりません。ここで

はそれを行う方法の提案です:

private void txt_pay2_TextChanged(object sender, EventArgs e) 
{ 
    string text1 = pay_dues.Text.Trim(); 
    string text2 = txt_pay2.Text.Trim(); 

    try 
    { 
     if (!string.IsNullOrEmpty(text1)) 
     { 
      // Validate both textboxes have numeric values: 
      Regex numericRegex = new Regex(@"^-?\d*(\.\d+)?$"); 
      if ((numericRegex.IsMatch(text1)) && 
       (numericRegex.IsMatch(text2))) 
      { 
       txt_dues2.Text = (Convert.ToInt32(text1) - Convert.ToInt32(text2)).ToString(); 
      } 
      else 
      { 
       MessageBox.Show("Please enter only numbers !"); 
       return; 
      } 

     } 
     else if (String.IsNullOrEmpty(txt_pay2.Text)) 
     { 
      MessageBox.Show("Please enter an amount."); 
     } 
    } 
    catch (Exception Ex) 
    { 

     MessageBox.Show(Ex.Message); 
    } 
} 
+0

数値が入力されたとき 数字だけを入力してくださいと言っています –

+0

'新しい正規表現(@" \ D ")'が-1のように負の値にマッチする –

+0

@MuhammadOsama '(@"^\ d $ ")私が更新したように。 –

0
try 
{ 
    int n; 
    bool isNumeric = int.TryParse(txt_pay2.Text, out n); 
    if(isNumeric) 
    { 
    if (!string.IsNullOrEmpty(txt_pay2.Text)) 
       { 
        txt_dues2.Text = (Convert.ToInt32(pay_dues.Text) - Convert.ToInt32(txt_pay2.Text)).ToString(); 

       } 
       else if (String.IsNullOrEmpty(txt_pay2.Text)) 
       { 
        MessageBox.Show("Enter A Amount Please !!"); 
       } 
    } 
    else 
    { 
    MessageBox.Show("Enter A Please !!"); 
    } 
} 
catch (Exception Ex) 
     { 

      MessageBox.Show(Ex.Message); 
     } 
0

ます。private void textBox3_TextChanged(オブジェクト送信者、EventArgsの電子)(string.IsNullOrEmpty(textBox2.Text)場合 { が { を試してみてください! ) { int val1 = Convert.ToInt32(textBox1.Text); int val2 = Convert.ToInt32(textBox2.Text); int result = val1 - val2; txtResult.Text = result.ToString();

  } 
      else if (String.IsNullOrEmpty(textBox2.Text)) 
      { 
       MessageBox.Show("Enter A Amount Please !!"); 
      } 
     } 
     catch (Exception Ex) 
     { 

      MessageBox.Show(Ex.Message); 
     } 
    } 
0

私はこのような何かお勧め:

private void txt_pay2_TextChanged(object sender, EventArgs e) { 
    // Contract: 
    if ((String.IsNullOrEmpty(txt_pay2.Text)) { 
    MessageBox.Show("Enter A Amount Please !!"); 

    // My suggestion (Win Forms): when asking user to enter anything (A Amount) 
    // set keyboard focus for he/she start entering the value 
    if (txt_pay2.CanFocus) 
     txt_pay2.Focus(); 

    return; 
    } 

    // Try to get values: 
    int Pay_Dues; 
    int Pay; 

    if (!int.TryParse(pay_dues.Text, out Pay_Dues)) 
    return; // Bad pay_dues.Text format 
    else if (!int.TryParse(txt_pay2.Text, out Pay)) 
    return; // Bad txt_pay2.Text format 

    // We've met contract's requirements and we've got Pay_Dues, Pay values 

    // We don't want a cascade of txt_pay2.TextChanged events: 
    // txt_pay2.Text = ... triggers txt_pay2_TextChanged 
    // which in turn calls txt_pay2.Text = ... 
    txt_pay2.TextChanged -= txt_pay2_TextChanged; 

    try { 
    txt_pay2.Text = (Pay_Dues - Pay).ToString(); 
    } 
    finally { 
    txt_pay2.TextChanged += txt_pay2_TextChanged; 
    } 
} 
関連する問題