March 2nd, 2010, 03:45 AM
Numbers Only Textboxes!!
I am having some problem with user input validation.....what I want to do is use Numbers only Text box in WPF......While user gives an input it must not allow the use of strings or any other character.....Anyone have any idea on this??
I have found a piece of code, but I am not able to use it correctly. If someone have better method please help me or give some insight on using this....Thanks......
public class NumberTextBox:TextBox
protected override void OnPreviewTextInput(System.Windows.Input.TextCompositionEventArgs e)
e.Handled = !AreAllValidNumericChars(e.Text);
bool AreAllValidNumericChars(string str)
bool ret = true;
if (str == System.Globalization.NumberFormatInfo.CurrentInfo.CurrencyDecimalSeparator |
str == System.Globalization.NumberFormatInfo.CurrentInfo.CurrencyGroupSeparator |
str == System.Globalization.NumberFormatInfo.CurrentInfo.CurrencySymbol |
str == System.Globalization.NumberFormatInfo.CurrentInfo.NegativeSign |
str == System.Globalization.NumberFormatInfo.CurrentInfo.NegativeInfinitySymbol |
str == System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator |
str == System.Globalization.NumberFormatInfo.CurrentInfo.NumberGroupSeparator |
str == System.Globalization.NumberFormatInfo.CurrentInfo.PercentDecimalSeparator |
str == System.Globalization.NumberFormatInfo.CurrentInfo.PercentGroupSeparator |
str == System.Globalization.NumberFormatInfo.CurrentInfo.PercentSymbol |
str == System.Globalization.NumberFormatInfo.CurrentInfo.PerMilleSymbol |
str == System.Globalization.NumberFormatInfo.CurrentInfo.PositiveInfinitySymbol |
str == System.Globalization.NumberFormatInfo.CurrentInfo.PositiveSign)
int l = str.Length;
for (int i = 0; i < l; i++)
char ch = str[i];
ret &= Char.IsDigit(ch);
Its not that I have not tried using this code....Its just that I didn't have any idea where to use it...
March 7th, 2010, 06:04 PM
Re: Numbers Only Textboxes!!
Although I haven't tested the above code , It should work just fine....but I have found and successfully used following bit of code.....Hope this Helps someone along the way.....
for this method to work you need to select the exact textbox and go to eventlist button in the Property window......search for PreviewTextInput and double click it....it will automatically generate the event for you...now enter the code inside that event braces......
private void textBox1_PreviewTextInput(object sender, TextCompositionEventArgs e)
foreach(char c in e.Text)
e.Handled = true;
This has some loop holes like it can take space, we can paste inside here and tab key for shifting between the various window element is absent etc.....so any one have idea maintaining that please help, although my initial requirement is fullfilled by this bit of code.....Thanks.....
Last edited by rocky_upadhaya; March 7th, 2010 at 06:11 PM.
March 31st, 2010, 10:42 PM
Re: Numbers Only Textboxes!!
This method is similar to above but it accepts tabs too......
private void Number_PreviewTextInput(object sender, TextCompositionEventArgs e)
char c = e.Text.ToCharArray().First();
e.Handled = !(char.IsNumber(c) || char.IsControl(c));
Click Here to Expand Forum to Full Width
This is a CodeGuru survey question.