文本框格式

时间:2011-03-28 09:40:35

标签: c# .net textbox format design-patterns

我的代码需要一些帮助。

我需要以下格式,

  

12345-1234567-1

基本上我只想输入数字,当文本长度达到5时,它应该附加' - '并再次达到13的长度,再次它应该附加' - '。

我的代码做得很好。但是当我使用退格/删除时,它总是将' - '附加到第6和第14位。

这是我的代码,

private void nicNo_txt_KeyUp(object sender, KeyEventArgs e)
    {
        if (e.KeyCode.ToString() != "Back" || e.KeyCode.ToString() != "Space" || e.KeyCode.ToString() != "Delete")
        {
            if (nicNo_txt.TextLength == 5 || nicNo_txt.TextLength == 13)
                nicNo_txt.AppendText("-");
        }
    }

此致

3 个答案:

答案 0 :(得分:4)

您是否尝试过MaskedTextBox,您可以在其中指定任何需要的掩码

答案 1 :(得分:1)

以下一个会做

在更改后进行格式化 - 将格式方法替换为您喜欢的任何内容:

    void oTextBoxAmount_TextChanged(object sender, EventArgs e)
    {
        //throw new NotImplementedException();
        if (sender is TextBox)
        {
            TextBox tb = sender as TextBox;
            tb.Text = FormatAmount(tb.Text);
            tb.SelectionStart = tb.Text.Length;
        }
    }

对于过滤密钥(以下示例过滤数字,但您可以更改条件):

    void oTextBoxAmount_KeyPress(object sender, KeyPressEventArgs e)
    {
        int val = (int)e.KeyChar;
        if (val >= 0x30 && val <= 0x39)
        {
            //Digits are ok
        }
        else if (val == 0x08)
        {
            //Backspace is ok
        }
        else
        {
            //Other are disallowed
            e.Handled = true;
        }
    }

答案 2 :(得分:0)

您可以使用AJAX Control Toolkit Masked Edit。它完全符合您的要求。

Ajax Control Toolkit - Masked Edit