форматирование текстового поля - PullRequest
0 голосов
/ 28 марта 2011

Мне нужна помощь с моим кодом.

Мне нужен следующий формат,

12345-1234567-1

В основном я хочувведите только цифры, и когда длина текста достигнет 5, он должен добавить '-' и снова после достижения длины 13, снова он должен добавить '-'.

Мой код делает это нормально.Но когда я использую backspace / delete, он всегда добавляет '-' к 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 ]

4 голосов
/ 28 марта 2011

Вы пробовали MaskedTextBox, в нем вы можете указать маску в любом формате, который вам нужен

1 голос
/ 28 марта 2011

Один ниже будет делать

Для форматирования после изменений - замените метод форматирования на что угодно:

    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;
        }
    }
0 голосов
/ 28 марта 2011

Вы можете использовать Маскированное редактирование AJAX Control Toolkit. Это именно то, что вы хотите.

Ajax Control Toolkit - Редактирование в маске

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...