Well, because you are *updating* the numbers in the text-box after the user
inputs, then you'll have to remove your formatting and then reapply your
formatting to get everything to work.
using System;
public class TestFormatting {
private static void Main(string[] args) {
Console.WriteLine(FormatNumber(""));
Console.WriteLine(FormatNumber("1"));
Console.WriteLine(FormatNumber("10"));
Console.WriteLine(FormatNumber("100"));
Console.WriteLine(FormatNumber("1000"));
Console.WriteLine(FormatNumber("10000"));
Console.WriteLine(FormatNumber("100000"));
Console.WriteLine(FormatNumber("1000000"));
Console.WriteLine(FormatNumber("10000000"));
Console.WriteLine(FormatNumber(""));
Console.WriteLine(FormatNumber("1"));
Console.WriteLine(FormatNumber("10"));
Console.WriteLine(FormatNumber("100"));
Console.WriteLine(FormatNumber("1,000"));
Console.WriteLine(FormatNumber("10,000"));
Console.WriteLine(FormatNumber("100,000"));
Console.WriteLine(FormatNumber("1,000,000"));
Console.WriteLine(FormatNumber("10,000,000"));
}
private static string FormatNumber(string number) {
return FormatNumber(number, 3);
}
private static string FormatNumber(string number, int groupLength) {
if ( number == null || number.Length == 0 ) { return ""; }
number = number.Replace(",", ""); // Get rid of old formatting
int commas = (number.Length-1)/groupLength;
int lead = (number.Length-1)%groupLength+1;
string formatted = number.Substring(0, lead);
for(int i = 0; i < commas; i++) {
formatted += "," + number.Substring(i*groupLength + lead,
groupLength);
}
return formatted;
}
}