user2714359
user2714359

Reputation: 117

Auto formatting a textbox text

I want to auto format a text entered in a textbox like so:

If a user enters 2 characters, like 38, it automatically adds a space. so, if I type 384052 The end result will be: 38 30 52.

I tried doing that, but it's ofr some reason right to left and it's all screwed up.. what I'm doing wrong?

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


Thanks!

Upvotes: 0

Views: 2013

Answers (4)

larose Banyuwangi
larose Banyuwangi

Reputation: 1

Try this.. on TextChanged event

textBoxX3.Text = Convert.ToInt64(textBoxX3.Text.Replace(",", "")).ToString("N0");
textBoxX3.SelectionStart = textBoxX3.Text.Length + 1;

Upvotes: 0

user2509901
user2509901

Reputation:

I used

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

Upvotes: 0

Roy Dictus
Roy Dictus

Reputation: 33149

It's much nicer if you just let the user type and then modify the contents when the user leaves the TextBox.

You can do that by reacting not to the KeyPress event, but to the TextChanged event.

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;

}

Upvotes: 1

CheapD AKA Ju
CheapD AKA Ju

Reputation: 721

On TextChanged event:

 int space = 0;
 string finalString =""; 

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

Upvotes: 0

Related Questions