I have a form with a text box that should only accept 4 digit year values between 1980-2011. I'm sure there should be a simple c# validation control to implement this validation check, but I can't seem to find it.
Any suggestions?
I have a form with a text box that should only accept 4 digit year values between 1980-2011. I'm sure there should be a simple c# validation control to implement this validation check, but I can't seem to find it.
Any suggestions?
Catch Validating event and add you validation code in there.
For a complete example check MSDN page.
For simple validation you can also use a MaskedTextBox.
First I'd say, use the max length property set to 4 so that no extra characters can be entered
Beyond that you would have to hook up your own controls to validate it (could be a on text changed validation, on lost focus, etc) that would check that only digits are entered and they are between your specified values
A MaskedTextBox would do the trick. Set the mask to your needs: msdn. But I doubt it will check if the value is between a range. It probably only checks if the value is a integer.
Ok, I'm not going to write all the code here but here's what I'd do:
In textchanged event of your textbox;
For this one, you need to compare each number one by one. I'd suggest you to write a method which parses the text and compares them with your expected values. Something like this:
private bool IsNumberValid(string text) { String min = "1980",max=2011; try { int minNumber = Convert.ToInt32(min.Substring(0,text.length)); int maxNumber = Convert.ToInt32(max.Substring(0,text.length)); int myNumber = Convert.ToInt32(text); if(myNumber <= max && myNumber >= min) return true; } catch(Exception ex) { return false; // number is not numeric } return false; } There may be small errors, didn't write it in VS. You'd need to check the length of the text and not call this method if it is 0.