📜  C#| MaskedTextBox类别(1)

📅  最后修改于: 2023-12-03 15:14:27.902000             🧑  作者: Mango

C# | MaskedTextBox 类别

MaskedTextBox 类是 C# Windows 窗体应用程序中的控件,它允许用户输入文本并在输入时根据特定的掩码格式自动格式化该文本。掩码格式指定为特殊字符序列,表示允许输入的字符和字符放置的位置。

创建控件

创建一个 MaskedTextBox 控件需要在视觉设计器中将其拖动到窗体上或在代码中添加以下语句:

MaskedTextBox maskedTextBox1 = new MaskedTextBox();
设置掩码格式

要设置用于 MaskedTextBox 控件的掩码格式,需要将 Mask 属性设置为具有有关应输入何种字符的掩码格式字符串。以下是一些常用的掩码格式字符串和其各自的解释:

  • 0:表示必须输入数字。
  • 9:表示输入数字是可选的。
  • #:表示输入数字或空格是可选的。
  • L:表示必须输入字母。
  • ?:表示输入字母是可选的。
  • .:表示小数点分隔符的位置。
  • -:表示破折号 (-) 的位置。
  • ::表示时间分隔符的位置。
  • /:表示日期分隔符的位置。

以下是一个 MaskedTextBox 控件的例子,其中 Mask 属性设置为 MM/dd/yy:

MaskedTextBox maskedTextBox1 = new MaskedTextBox();
maskedTextBox1.Mask = "00/00/00";
格式化行为

通过 MaskedTextBox 控件,可以使用户输入数据按照掩码格式自动格式化。MaskInputRejected 事件可以帮助我们识别此格式化行为。

例如,在下面的代码中,如果文本不是有效的日期,MaskInputRejected 事件将取消事件,并在 ToolTip 中显示 Invalid Input:

private 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, maskedTextBox1.Location, 5000);
    }
    else if (e.Position == maskedTextBox1.Mask.Length || e.Position == -1)
    {
        toolTip1.ToolTipTitle = "Input Rejected - End of Field";
        toolTip1.Show("You cannot add extra characters to the end of this text field.", 
                      maskedTextBox1, maskedTextBox1.Location, 5000);
    }
    else
    {
        toolTip1.ToolTipTitle = "Input Rejected";
        toolTip1.Show("You can only enter letters or digits into this text field.", 
                      maskedTextBox1, maskedTextBox1.Location, 5000);
    }
}
参考