MaskedTextBox.TypeValidationCompleted 事件
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
当 MaskedTextBox 已使用 ValidatingType 属性完成了对当前值的分析时发生。
public:
event System::Windows::Forms::TypeValidationEventHandler ^ TypeValidationCompleted;
public event System.Windows.Forms.TypeValidationEventHandler TypeValidationCompleted;
public event System.Windows.Forms.TypeValidationEventHandler? TypeValidationCompleted;
member this.TypeValidationCompleted : System.Windows.Forms.TypeValidationEventHandler
Public Custom Event TypeValidationCompleted As TypeValidationEventHandler
事件类型
示例
下面的代码示例尝试将用户的输入分析为有效 DateTime 对象。 如果失败, TypeValidationCompleted 事件处理程序会向用户显示错误消息。 如果值为有效的 DateTime,则代码将验证提供的日期是否不早于今天的日期。 此代码示例要求Windows 窗体项目包含名为 MaskedTextBox 的MaskedTextBox1
控件和ToolTip名为 的ToolTip1
控件。
private void Form1_Load(object sender, EventArgs e)
{
maskedTextBox1.Mask = "00/00/0000";
maskedTextBox1.ValidatingType = typeof(System.DateTime);
maskedTextBox1.TypeValidationCompleted += new TypeValidationEventHandler(maskedTextBox1_TypeValidationCompleted);
maskedTextBox1.KeyDown += new KeyEventHandler(maskedTextBox1_KeyDown);
toolTip1.IsBalloon = true;
}
void maskedTextBox1_TypeValidationCompleted(object sender, TypeValidationEventArgs e)
{
if (!e.IsValidInput)
{
toolTip1.ToolTipTitle = "Invalid Date";
toolTip1.Show("The data you supplied must be a valid date in the format mm/dd/yyyy.", maskedTextBox1, 0, -20, 5000);
}
else
{
//Now that the type has passed basic type validation, enforce more specific type rules.
DateTime userDate = (DateTime)e.ReturnValue;
if (userDate < DateTime.Now)
{
toolTip1.ToolTipTitle = "Invalid Date";
toolTip1.Show("The date in this field must be greater than today's date.", maskedTextBox1, 0, -20, 5000);
e.Cancel = true;
}
}
}
// Hide the tooltip if the user starts typing again before the five-second display limit on the tooltip expires.
void maskedTextBox1_KeyDown(object sender, KeyEventArgs e)
{
toolTip1.Hide(maskedTextBox1);
}
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.MaskedTextBox1.Mask = "00/00/0000"
Me.MaskedTextBox1.ValidatingType = GetType(System.DateTime)
Me.ToolTip1.IsBalloon = True
End Sub
Private Sub MaskedTextBox1_TypeValidationCompleted(ByVal sender As Object, ByVal e As TypeValidationEventArgs) Handles MaskedTextBox1.TypeValidationCompleted
If (Not e.IsValidInput) Then
Me.ToolTip1.ToolTipTitle = "Invalid Date"
Me.ToolTip1.Show("The data you supplied must be a valid date in the format mm/dd/yyyy.", Me.MaskedTextBox1, 0, -20, 5000)
Else
' Now that the type has passed basic type validation, enforce more specific type rules.
Dim UserDate As DateTime = CDate(e.ReturnValue)
If (UserDate < DateTime.Now) Then
Me.ToolTip1.ToolTipTitle = "Invalid Date"
Me.ToolTip1.Show("The date in this field must be greater than today's date.", Me.MaskedTextBox1, 0, -20, 5000)
e.Cancel = True
End If
End If
End Sub
' Hide the tooltip if the user starts typing again before the five-second display limit on the tooltip expires.
Private Sub MaskedTextBox1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles MaskedTextBox1.KeyDown
Me.ToolTip1.Hide(Me.MaskedTextBox1)
End Sub
注解
控件 MaskedTextBox 将根据其 属性定义的 MaskedTextBox.ValidatingType 类型(可选)验证用户输入。 如果此属性不是 null
,则会发生以下一系列事件:
当发生以下情况之一时,验证序列开始:
MaskedTextBox 控件会松动焦点。
检索 Text 属性。
调用 ValidateText 方法。
这些事件中的任何一个都会导致调用
Parse
使用 ValidatingType 属性指定的类型的 方法。Parse
负责将格式化的输入字符串转换为目标类型。 成功的转换等同于成功的验证。返回后
Parse
,将 TypeValidationCompleted 引发 事件。 此事件的事件处理程序最常实现为执行类型或掩码验证处理。 它接收包含 TypeValidationEventArgs 有关转换的信息的参数;例如, IsValidInput 成员指示转换是否成功。事件事件处理程序 TypeValidationCompleted 返回后,将引发标准验证事件 Validating。 可以实现处理程序来执行标准验证,可能包括取消事件。
如果在步骤 3 中未取消事件,则会引发标准控制验证事件 Validated 。
如果在事件处理程序中将 Cancel 属性设置为 true
,则事件将被取消,并且MaskedTextBox控件将保留焦点,除非后续Validating事件将其属性的版本CancelEventArgs.Cancel设置回 false
TypeValidationCompleted 。