如何格式化文本框以在用户键入时显示SSN

时间:2014-06-16 15:00:52

标签: c# winforms

我有一个文本框,我想实时格式化:###-##-####用户输入。

我有以下代码:

private bool bFlag;

private void tbSSN_TextChanged(object sender, EventArgs e)
{
    string str = tbSSN.Text;
    if (!bFlag) 
    {
        if (str.Length == 3 || str.Length == 6) 
        {
            tbSSN.Text += "-";
        bFlag = true;
        tbSSN.SelectionStart = tbSSN.Text.Length;
        } 
        else if (str.Length > 11) 
        {
            tbSSN.Text = tbSSN.Text.Remove(tbSSN.Text.Length - 1);
        tbSSN.SelectionStart = tbSSN.Text.Length;
        }
    } 
    else 
    {
        bFlag = false;
    }
}

唯一的问题是,当我点击退格键并尝试再次输入数字时,我可以输入以下格式:#####--######-#####-##

我知道我必须添加KeyPress事件以确保上述问题得到解决,但我不确定如何添加它。

我如何编码KeyPress事件?

这是一个WinForm应用程序。

1 个答案:

答案 0 :(得分:3)

使用MaskedTextBox代替普通TextBox,并为TextBox定义Mask

yourMaskedTextBox.Mask = "000-00-0000";