簡體   English   中英

C#Winform文本框驗證錯誤

[英]C# Winform Textbox Validation Error

我有4個textboxes

  1. 支付數量
  2. 錢(驗證客戶的錢)
  3. 零錢(如果錢大於金額)
  4. 和余額(如果錢少於金額)

最后一個textbox用於輸入(獲取/輸入客戶的錢)。

我已將代碼放入textBoxInput的TextChanged處理程序中(我認為每次用戶在該文本框上輸入內容時,它都會自動更新):

private void textBoxInput_TextChanged(object sender, EventArgs e)
{
    textBoxMoney.Text = textBoxInput.Text;

    if (int.Parse(textBoxAmount.Text) > int.Parse(textBoxMoney.Text))
    {
        int balance = int.Parse(textBoxAmount.Text) - int.Parse(textBoxMoney.Text);
        textBoxBalance.Text = balance.ToString();
    }

    if (int.Parse(textBoxMoney.Text) > int.Parse(textBoxAmount.Text))
    {
        int change = int.Parse(textBoxMoney.Text) - int.Parse(textBoxAmount.Text);
        textBoxChange.Text = change.ToString();
    }
}

它可以正常運行,但是每當我在textbox按退格鍵(或清除數據)時,都會出現格式錯誤。 當我在其中放一個字母時,也會出現錯誤。 如果用戶輸入字母並清除數據,如何防止出現遺囑? 另外,當我為ex設置更大的值時,還會出現另一個錯誤。

付款金額= 600,我輸入= 1000,余額文本框= 550,更改文本框=330。計算不正確。 有人可以幫我嗎?

處理金錢時,通常最好使用Decimal類型而不是Integer ,但對於您的示例,最好使用TryParse()方法代替Parse 發生格式錯誤的原因是,當您退格時,文本框為空,並且解析失敗。

快速返工:

private void textBoxInput_TextChanged(object sender, EventArgs e) {
  textBoxMoney.Text = textBoxInput.Text;

  int amount = 0;
  int money = 0;
  int balance = 0;
  int change = 0;

  int.TryParse(textBoxAmount.Text, out amount);
  int.TryParse(textBoxMoney.Text, out money);

  if (amount > money)
    balance = amount - money;
  if (money > amount)
    change = money - amount;

  textBoxBalance.Text = balance.ToString();
  textBoxChange.Text = change.ToString();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM