-1

I have this textbox where the decimal place should only be two, it works but it disables the back space afterwards

  try
        {
            if (string.IsNullOrWhiteSpace(textBox1.Text))
            {
                textBox2.Clear();
            }
            else
            {
                if (Convert.ToDouble(textBox1.Text) > Convert.ToDouble(grandTotal.Text))
                {
                    double change = Convert.ToDouble(textBox1.Text) - Convert.ToDouble(grandTotal.Text);
                    textBox2.Text = change.ToString("#,0.00");
                }
                else if (Convert.ToDouble(textBox1.Text) == Convert.ToDouble(grandTotal.Text))
                {
                    textBox2.Text = "0";
                }
                else
                {
                    textBox2.Clear();
                }
            }
        }
        catch(Exception)
        {

        }
user8248810
  • 36
  • 1
  • 3
  • 11

2 Answers2

1

You can do this on textbox KeyPress Event Handler:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == '.' && textBox1.Text.Contains('.'))
            e.Handled = true;
        if (char.IsNumber(e.KeyChar) || e.KeyChar == '.')
        {
            if (Regex.IsMatch(
             textBox1.Text,
             "^\\d*\\.\\d{2}$")) e.Handled = true;
        }
        else e.Handled = e.KeyChar != (char)Keys.Back;
    }

Basically what it does is it limits the decimal places to two, it also limits decimal point into one. But the backspace should be working fine still.

Willy David Jr
  • 7,817
  • 5
  • 40
  • 51
0

Also you have alternative option rather than coding on selected control (textBox1). You can create reusable custom text box controller. This will guide you Decimal Textbox in Windows Forms

Community
  • 1
  • 1