Textbox for price/cash/currency on C#

前端 未结 6 554
慢半拍i
慢半拍i 2020-12-15 15:10

I have a problem that is haunting me for a while. I tried some solutions but they didn\'t worked.

I have a textbox that is for cash input ($999,99 for example). Howe

6条回答
  •  半阙折子戏
    2020-12-15 15:39

    I struggled with this for hours too. I tried to use maskedTextBox but that was just clunky for the users to enter text. I also didn't like having to deal with the masking for calculations. I also looked into using the databinding formatting but that just seemed overkill.

    The way I ended up going was not to use a TextBox for inputting numbers. Use the NumericUpDown object instead. No need conversion and you can set your decimals and thousands commas in the properties if you like ;) I set my increment to 1000 since i was dealing with income.

    Do be aware that the .Text that comes through will have commas when there is a penny decimal and amount over 1000 (i.e. 1,000.01) , otherwise the decimal and trailing 0s are dropped.

    I also found this short and sweet solution which worked well but was unneccesary with numericUpDown. You can put this on leave event.

     Decimal val;
    if (Decimal.TryParse(TxtCosPrice.Text, out val))
        TxtCosPrice.Text = val.ToString("C");
    else
        MessageBox.Show("Oops!  Bad input!");
    

提交回复
热议问题