I would recommend doing this in two cheks:
First check: find if new character is valid. You probably should accept only numbers, comma, dot, +- marks and letter e. Every other character should cause it return false
Second check: append new character to string, split it on commas using split method and for every separate string perform TryParse method from float/double. You probably should treat the last string from splitted elements differently, as the input can be still in progress (i.e. a string that will end with dot will not probably be parsed.
Just remember, that you will need to "tell" the parser, that dots and other characters are allowed and how they should be processed. For me, following settings work fine:
System.Globalization.CultureInfo info = new System.Globalization.CultureInfo("en-GB");
System.Globalization.NumberStyles styl = System.Globalization.NumberStyles.AllowDecimalPoint;
double.TryParse(someString, styl, info, out number);`
And one thing: If you can, change the separation mark from comma to semicolon. Comma in some cultures is used to indicate decimal point.