C# - форматировать конкретное число, используя format.string во время выполнения (live) на texbox

Я сделал код для форматирования числа, когда общая длина == 11, он запускается при изменении texbox, но форматируется только когда в нем 11 символов, я хотел бы сделать это во время выполнения (в реальном времени), понял? Возможно? Смотрите мой код:

private void textBox3_TextChanged(object sender, EventArgs e)
        {

            Int64 cpf = Convert.ToInt64(textBox3.Text);
            if (textBox3.TextLength == 11)
            {
                textBox3.Text = string.Format(@"{0:000\.000\.000-00}", Convert.ToInt64(cpf));
            }
        }

Спасибо

2 ответа

Решение

Как сказал Лениберезовский, используйте замаскированное текстовое поле, но установите PromptChar на то, что вы хотите. Что-то вроде:

//In your form_load
//Based on your code above, assuming textBox3 is a MaskedTextbox    
textBox3.KeyUp += CheckEvent()
textBox3.Mask = "000000000000";
textBox3.PromptChar = 'x'; //set this to a space or whatever you want ' ' for blank!

//check AFTER every key press
private void CheckEvent(object Sender, KeyEventArgs e)
{
    if(textBox3.Text.Count() < 12)
    {
        return;
    }

    //change the textboxMask when all chars present
    maskedTextBox1.Mask = "0:000.000.000-00";
}

Рассмотрите возможность использования MaskedTextbox с Mask равно 000.000.000-00, Это заполнит маску обычным способом слева направо. Вход будет выглядеть так:

___.___.___-__

Когда используются типы 1 это покажет 1__.___.___-__, Когда используются типы 12 это покажет 12_.___.___-__, И так далее.

Другие вопросы по тегам