Input Validation
This feature provides a built‐in mechanism to validate phone number input and notify developers of the input’s validity through events and read-only properties.
Overview
The Input Validation feature consists of several public properties and events that allow developers to enforce custom validation rules for the phone number input. The control automatically validates the input and exposes both the validation result and any error message.
ValidationFunction
Func<string, bool>
null
A delegate that validates the phone number input; returns true if valid and false otherwise.
ValidationErrorMessage
string
"Invalid input."
A message that explains why the input did not pass validation.
Validated
event ValidationEventHandler
N/A
An event raised after validation is performed, allowing developers to handle validation outcomes.
IsValid (read-only)
bool
true
Indicates whether the current input passes the defined validation function.
ErrorMessage (read-only)
string
string.Empty
Contains the error message associated with the last validation attempt if the input was invalid.
Key Points
Custom Validation
Developers can assign their own function to ValidationFunction to enforce business rules or formatting standards.
Immediate Feedback
Validation is triggered on input changes, and the control automatically updates IsValid and ErrorMessage.
Event-Driven Notification
The Validated event allows additional logic to be executed after the input is validated.
Best Practices
Implement Comprehensive Validation
Ensure that your ValidationFunction covers all edge cases, such as proper formatting, required country code, and valid digit count.
Provide Meaningful Error Messages
Set a clear and descriptive ValidationErrorMessage so that users understand why their input was rejected.
Subscribe to the Validated Event
Use the Validated event to trigger UI updates or error notifications based on the validation outcome.
Avoid Complex Operations in the Delegate
Keep the ValidationFunction lightweight to maintain a responsive UI; offload any heavy processing as needed.
Common Pitfalls
Not Updating the UI on Validation Failure
Always subscribe to the Validated event to update error displays or visual cues when input is invalid.
Overly Permissive Validation Function
Ensure that the ValidationFunction correctly handles empty strings, non-digit characters, and unexpected formats.
Ignoring the ValidationErrorMessage
Set and utilize the ValidationErrorMessage to provide clear feedback to end users instead of leaving it blank.
Usage Scenarios
Enforcing International Formats
Validate that international numbers include the correct country code and formatting using a custom ValidationFunction.
Local Phone Number Verification
Configure validation logic to ensure that local phone numbers adhere to national formatting rules.
Real-Time Input Feedback
Use the Validated event to update UI elements (such as error labels or border colors) immediately after input is modified.
Code Examples
Example 1: Basic Validation Setup This sample shows how to configure a simple validation function that ensures the phone number contains exactly 10 digits.
// Create an instance of the phone number box control
SiticonePhoneNumberBox phoneNumberBox = new SiticonePhoneNumberBox();
// Define a simple validation function: valid if exactly 10 digits are present
phoneNumberBox.ValidationFunction = (input) =>
{
// Remove non-digit characters
string digitsOnly = new string(input.Where(char.IsDigit).ToArray());
return digitsOnly.Length == 10;
};
// Set a custom error message
phoneNumberBox.ValidationErrorMessage = "The phone number must contain exactly 10 digits.";
// Subscribe to the Validated event to handle validation outcomes
phoneNumberBox.Validated += (sender, args) =>
{
if (!args.IsValid)
{
// For example, display the error message in a label
errorLabel.Text = args.ErrorMessage;
}
else
{
errorLabel.Text = string.Empty;
}
};
// Set location and size, then add the control to the form
phoneNumberBox.Location = new Point(20, 20);
phoneNumberBox.Size = new Size(250, 40);
this.Controls.Add(phoneNumberBox);
Example 2: Advanced Validation with Multiple Conditions This example demonstrates a more complex validation function that checks for a valid country code prefix along with digit count.
// Assume the control is already instantiated
phoneNumberBox.ValidationFunction = (input) =>
{
// Example: For international format, require a '+' sign and at least 11 digits
if (input.StartsWith("+"))
{
string digitsOnly = new string(input.Where(char.IsDigit).ToArray());
return digitsOnly.Length >= 11;
}
// For national format, require exactly 10 digits
else
{
string digitsOnly = new string(input.Where(char.IsDigit).ToArray());
return digitsOnly.Length == 10;
}
};
// Set a corresponding error message
phoneNumberBox.ValidationErrorMessage = "Invalid phone number. Ensure it includes a valid country code for international numbers or exactly 10 digits for local numbers.";
// Subscribe to the Validated event to react to validation outcomes
phoneNumberBox.Validated += (sender, args) =>
{
if (!args.IsValid)
{
// Highlight the control or show a tooltip with the error message
phoneNumberBox.BackColor = Color.MistyRose;
}
else
{
phoneNumberBox.BackColor = Color.White;
}
};
Example 3: Handling Validation State in Real-Time This sample illustrates how to retrieve the current validation status and error message at any point.
// Button click event to check the current validation state
private void CheckValidationButton_Click(object sender, EventArgs e)
{
if (phoneNumberBox.IsValid)
{
MessageBox.Show("Phone number is valid.");
}
else
{
MessageBox.Show($"Phone number is invalid: {phoneNumberBox.ErrorMessage}");
}
}
Review
Customizability
The ValidationFunction property offers flexible customization to enforce diverse business rules.
Immediate Feedback
The Validated event and read-only properties (IsValid, ErrorMessage) provide real-time feedback on user input.
Integration Ease
Code examples demonstrate straightforward integration with common UI update scenarios based on validation outcomes.
Summary
The Input Validation feature of the SiticonePhoneNumberBox control enables developers to enforce custom validation rules for phone number input. By leveraging the ValidationFunction, ValidationErrorMessage, and Validated event, developers can provide immediate and clear feedback to users, ensuring that input conforms to the required formats and standards.
Additional Notes
Extensibility
The ValidationFunction can be extended to support complex validation scenarios, including regex checks and multi-condition logic.
UI Feedback
Combine the Input Validation feature with visual customizations (e.g., border color changes, error labels) for a cohesive experience.
Debugging
Use the ErrorMessage property during development to troubleshoot and fine-tune the validation logic as needed.
Last updated