2013-09-19 3 views
-1

Я хочу Автоформата текст, введенный в текстовое поле, как так:Автоматическое форматирование текста текстового поля

Если пользователь вводит 2 символа, как 38, он автоматически добавляет пробел. поэтому, если я напечатаю 384052 Конечный результат будет: 38 30 52.

Я пробовал это делать, но это по праву налево, и все это испортило .. что я делаю неправильно?

static int Count = 0; 
    private void packetTextBox_KeyPress(object sender, KeyPressEventArgs e) 
     { 
      Count++; 
      if (Count % 2 == 0) 
      { 
       packetTextBox.Text += " "; 
      } 
     } 


Thanks! 
+0

'MaskedTextBox'? –

+0

@SriramSakthivel Можете ли вы быть более конкретным, чем просто называть элемент управления? Я новичок в C#. Я не знаю длины, поэтому не могу использовать маску. – user2714359

+0

http://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox(v=vs.110).aspx – Arie

ответ

1

Это гораздо лучше, если вы просто дайте тип пользователя, а затем изменить содержимое, когда пользователь покидает TextBox.

Вы можете сделать это, отреагировав не на событие KeyPress, а на событие TextChanged.

private void packetTextBox_TextChanged(object sender, EventArgs e) 
{ 
    string oldValue = (sender as TextBox).Text.Trim(); 
    string newValue = ""; 

    // IF there are more than 2 characters in oldValue: 
    //  Move 2 chars from oldValue to newValue, and add a space to newValue 
    //  Remove the first 2 chars from oldValue 
    // ELSE 
    //  Just append oldValue to newValue 
    //  Make oldValue empty 
    // REPEAT as long as oldValue is not empty 

    (sender as TextBox).Text = newValue; 

} 
0

На TextChanged события:

int space = 0; 
string finalString =""; 

for (i = 0; i < txtbox.lenght; i++) 
{ 
     finalString = finalString + string[i]; 
     space++; 
     if (space = 3) 
     { 
      finalString = finalString + " "; 
      space = 0; 
     } 
} 
0

Я использовал

int amount; 
    private void textBox1_TextChanged(object sender, EventArgs e) 
    { 
     amount++; 
     if (amount == 2) 
     { 
      textBox1.Text += " "; 
      textBox1.Select(textBox1.Text.Length, 0); 
      amount = 0; 
     } 
    } 
0

Попробуйте это .. на TextChanged событие

textBoxX3.Text = Convert.ToInt64(textBoxX3.Text.Replace(",", "")).ToString("N0"); 
textBoxX3.SelectionStart = textBoxX3.Text.Length + 1; 
Смежные вопросы