2013-04-13 1 views
0

Я сделал код для форматирования числа, когда total lengh is == 11, он запускается при изменении texbox, но только формат, когда он имеет 11 символов, я бы как это сделать во время работы (вживую), понял? Возможно ? Смотрите мой код:C# - формат определенного номера с использованием format.string во время выполнения (в прямом эфире) на texbox

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)); 
      } 
     } 

Благодаря

+1

Нет, я не понял, что значит * сделать это во время выполнения * –

+1

@lazyberezovsky, я буквально думал то же самое! Это уже «время выполнения». : D –

+0

i am braziliam, не говорю по-английски очень хорошо .. То, что я имею в виду, например, если пользователь типа 1, он преобразуется в 000.000.000-01, если тип 12, он преобразуется в 000.000.000-12 , если тип 123, он будет конвертироваться в 000.000.001-23, взять на себя? intead wait user type all numbers (ex: 11804852598, чтобы конвертировать в 118.048.525-98), он будет работать вживую (проблема в том, что я обнаружил, что, когда вы делаете live, это меняет значение текстового поля), понятное сейчас? –

ответ

1

Как заявили лазиберовский, используйте маскированное текстовое поле, но установите 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"; 
} 
+0

его почти идеально, но, к примеру, когда я добавляю это: на маске 000.000.000-00 и promptchar как "", мое поле перед типом пользователя показывает: «... -», я хотел бы скрыть эти символы, только показать их после значений типа пользователя в поле, например: if type 118, показать 118., если тип 118048, показать 118.048, понял? Спрятать . и - до тех пор, пока пользователь не наберет qty для получения этого символа. Спасибо –

+0

Взгляните на отредактированный код, это не идеально, но поиграйте с ним, концепция - проверить, нажата ли клавиша с помощью KeyUp и если все числа присутствуют (12), измените маску. –

+0

Я отредактировал его, его возвращающую ошибку: Ошибка 1 Нет перегрузки для метода 'CheckEvent' принимает 0 аргументов –

0

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

___.___.___-__ 

Когда типы используют 1 он покажет 1__.___.___-__. При использовании типов 12 он покажет 12_.___.___-__. И так далее.

+0

Я знаю эту команду, проблема в том, что эти ___, которые я не хочу .. знаю, как изменить это для «" вместо «_»? –

+0

@felipeSalomao подчеркивает, что позиции пользователя должны быть заполнены. Насколько я понимаю, вам нужны все цифры для ввода. Итак, это покажет пользователю, что ввод еще не завершен. –