Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Textbox for numbers with a comma thousand seperator comma for currency C#

0.00/5 (No votes)
28 May 2013 2  
A textbox usercontrol that displays numbers separated by comma such as currency.

Introduction

This is a simple and very usable usercontrol for entering numbers and displaying them such as currency. E. g., 1,200,000. I decided to make this a usercontrol because we can reuse it in multiple project. This usercontrol has two properties: "textWithcomma" that maintains the text of the usercontrol with a comma(','), "textWithoutcomma" that maintains the text of the usercontrol without comma. The second property is useful for math operations such as add ,...I have a method that skips the comma from the text and then saves it in the second property.

Using the code

  1. Use File->New Project and then select C# and press OK:
  2. Use Project->Add User Control and press OK:

  3. Now we have a stage like this to add components from the toolbox, in this project we need a TextBox for our usercontrol.

  4. Drag and drop a textbox from the toolbox:

  5. Right click on the textbox and select View Code. We will define two properties and a method which is used to skip comma from the text:
  6. The properties:

    public string textWithcomma { get; set; }
    public string textWithoutcomma { get; set; }

    And the method (this method is used to skip comma):

    public string skipComma(string str)
    {
        string[] ss = null;
        string strnew = "";
        if (str == "")
        {
            strnew = "0";
        }
        else
        {
            ss = str.Split(',');
            for (int i = 0; i < ss.Length; i++)
            {
                strnew += ss[i];
            }
        }
        return strnew;
    }
  7. Now we will right click on the textbox and select Properties and in the Properties dialog we will select events and then select the TextChanged event from the list and double click on it. In this method (TextChanged) we will write this code:
  8. if (textBox1.Text == "")
    {
        textBox1.Text =null;
        textWithcomma = "0"; //this property maintain the content of textbox with comma
        textWithoutcomma = "0";  //this property maintain the content of textbox without comma
    }
    else
    {
        if (textBox1.Text != "")
        {
            double d = Convert.ToDouble(skipComma(textBox1.Text));
            textBox1.Text=d.ToString("#,#",
              System.Globalization.CultureInfo.InvariantCulture);
            textWithcomma = textBox1.Text;//property maintain content of textbox with comma
            textWithoutcomma = skipComma(textBox1.Text);
            //property maintain content of textbox without comma
        }
    }
    textBox1.Select(textBox1.Text.Length, 0);
  9. Now we will right click on the textbox and select Properties and and then select events. Then from the event list we will choose the KeyPress event and double click on it. Now write the below code within this method. This code forces the textbox to accept numbers only:
    if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8)
    {
        e.Handled = true;
    }
  10. In the end Build the project by right clicking on the project (in this case WindowsFormApplication1) in Solution Explorer and selecting Build. Now you have a control in the Toolbox and you can use it several times in your project.

Please vote for me if this tip is useful!

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here