自动设置文本框文本的格式

本文关键字:文本 格式 置文本 | 更新日期: 2023-09-27 18:31:54

我想自动格式化在文本框中输入的文本,如下所示:

如果用户输入 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!

自动设置文本框文本的格式

如果您只是让用户键入,然后在用户离开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;
}

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

我用过

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

试试这个。在文本更改事件上

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