public ref class MaskedTextBox : System::Windows::Forms::TextBoxBase
[System.ComponentModel.DefaultBindingProperty("Text")]
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.AutoDispatch)]
[System.Runtime.InteropServices.ComVisible(true)]
public class MaskedTextBox : System.Windows.Forms.TextBoxBase
[System.ComponentModel.DefaultBindingProperty("Text")]
public class MaskedTextBox : System.Windows.Forms.TextBoxBase
[<System.ComponentModel.DefaultBindingProperty("Text")>]
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.AutoDispatch)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type MaskedTextBox = class
inherit TextBoxBase
[<System.ComponentModel.DefaultBindingProperty("Text")>]
type MaskedTextBox = class
inherit TextBoxBase
Public Class MaskedTextBox
Inherits TextBoxBase
MaskedTextBox
下面的代码示例初始化
MaskedTextBox
以接受日期,并使用
MaskInputRejected
和
TypeValidationCompleted
事件提醒用户输入无效。
private void Form1_Load(object sender, EventArgs e)
maskedTextBox1.Mask = "00/00/0000";
maskedTextBox1.MaskInputRejected += new MaskInputRejectedEventHandler(maskedTextBox1_MaskInputRejected);
maskedTextBox1.KeyDown += new KeyEventHandler(maskedTextBox1_KeyDown);
void maskedTextBox1_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
if (maskedTextBox1.MaskFull)
toolTip1.ToolTipTitle = "Input Rejected - Too Much Data";
toolTip1.Show("You cannot enter any more data into the date field. Delete some characters in order to insert more data.", maskedTextBox1, 0, -20, 5000);
else if (e.Position == maskedTextBox1.Mask.Length)
toolTip1.ToolTipTitle = "Input Rejected - End of Field";
toolTip1.Show("You cannot add extra characters to the end of this date field.", maskedTextBox1, 0, -20, 5000);
toolTip1.ToolTipTitle = "Input Rejected";
toolTip1.Show("You can only add numeric characters (0-9) into this date field.", maskedTextBox1, 0, -20, 5000);
void maskedTextBox1_KeyDown(object sender, KeyEventArgs e)
// The balloon tip is visible for five seconds; if the user types any data before it disappears, collapse it ourselves.
toolTip1.Hide(maskedTextBox1);
Private Sub MaskedTextBox1_MaskInputRejected(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MaskInputRejectedEventArgs) Handles MaskedTextBox1.MaskInputRejected
If (Me.MaskedTextBox1.MaskFull) Then
ToolTip1.ToolTipTitle = "Input Rejected - Too Much Data"
ToolTip1.Show("You cannot enter any more data into the date field. Delete some characters in order to insert more data.", Me.MaskedTextBox1, Me.MaskedTextBox1.Location.X, Me.MaskedTextBox1.Location.Y, 5000)
ElseIf (e.Position = Me.MaskedTextBox1.Mask.Length) Then
ToolTip1.ToolTipTitle = "Input Rejected - End of Field"
ToolTip1.Show("You cannot add extra characters to the end of this date field.", Me.MaskedTextBox1, 0, -20, 5000)
ToolTip1.ToolTipTitle = "Input Rejected"
ToolTip1.Show("You can only add numeric characters (0-9) into this date field.", Me.MaskedTextBox1, 0, -20, 5000)
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.ToolTip1.IsBalloon = True
Me.MaskedTextBox1.Mask = "00/00/0000"
End Sub
Private Sub MaskedTextBox1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles MaskedTextBox1.KeyDown
' The balloon tip is visible for five seconds; if the user types any data before it disappears, collapse it ourselves.
Me.ToolTip1.Hide(Me.MaskedTextBox1)
End Sub
类
MaskedTextBox
是一个增强控件
TextBox
,支持用于接受或拒绝用户输入的声明性语法。
Mask
使用 属性,可以指定以下输入,而无需在应用程序中编写任何自定义验证逻辑:
所需的输入字符。
可选输入字符。
掩码中给定位置处预期的输入类型;例如,数字、字母或字母数字字符。
掩码文本或应直接显示在 中的
MaskedTextBox
字符;例如,电话号码中的连字符 () ,或价格中的货币符号。
输入字符的特殊处理;例如,将字母字符转换为大写。
MaskedTextBox
当控件在运行时显示时,它将掩码表示为一系列提示字符和可选文本字符。 每个可编辑掩码位置(表示必需或可选输入)都以单个提示字符显示。 例如,数字符号 (#) 通常用作数字字符输入的占位符。 可以使用
PromptChar
属性指定自定义提示字符。 属性
HidePromptOnLeave
确定控件失去输入焦点时用户是否看到提示字符。
当用户在掩码文本框中键入输入时,有效的输入字符将按顺序替换其各自的提示字符。 如果用户键入无效的输入字符,则不会进行替换,但如果 属性设置为
true
,则会发出
BeepOnError
蜂鸣声,并
MaskInputRejected
引发 事件。 可以通过处理此事件来提供自己的自定义错误逻辑。
当当前插入点位于文本字符处时,用户有许多选项:
如果键入提示字符以外的字符,则文本将自动跳过,并且输入字符将应用于下一个可编辑的位置,由下一个提示字符表示。
如果键入提示字符且
AllowPromptAsInput
属性为 true,则输入将覆盖提示字符,并且插入点将移动到掩码中的下一个位置。
与往常一样,箭头键可用于导航到上一个或后续位置。
可以使用
MaskFull
属性来验证用户是否已输入所有必需的输入。 属性
Text
将始终检索根据掩码和
TextMaskFormat
属性设置格式的用户输入。
控件
MaskedTextBox
实际上将所有掩码处理延迟到
System.ComponentModel.MaskedTextProvider
属性
MaskedTextProvider
指定的类。 此标准提供程序支持除代理项和垂直组合字符之外的所有 Unicode 字符;但是,
AsciiOnly
属性可用于将输入限制为字符集 a-z、A-Z 和 0-9。
掩码不一定保证用户的输入表示给定类型的有效值;例如,可以为年限输入 -9。 可以通过将该值类型的
ValidatingType
实例分配给 属性来验证用户的输入是否表示有效值。 可以通过监视
TypeValidationCompleted
事件来检测用户是否在
MaskedTextBox
包含无效值时删除焦点。 如果类型验证成功,则表示值的对象将通过 参数的
TypeValidationEventArgs
属性提供
ReturnValue
。
与 控件一
TextBox
样,一些常见的键盘快捷方式不适用于
MaskedTextBox
。 具体而言,ctrl-R (右对齐文本) ,CTRL-L (左对齐文本) ,ctrl-L (居中文本) 不起作用。
与 Visual Basic 6.0 的兼容性
MaskedTextBox
旨在保留 Visual Basic 6.0 中掩码编辑控件的大部分功能。 下表列出了掩码编辑控件上的常见属性,并在 上
MaskedTextBox
提供它们的等效属性。
Visual Basic 6.0) 属性 (屏蔽的编辑控件
等效 MaskedTextBox (.NET Framework) 属性