0

テキストボックスに入力されたテキストを次のように自動フォーマットしたい:

ユーザーが 38 のように 2 文字を入力すると、自動的にスペースが追加されます。したがって、384052 と入力すると、最終結果は 38 30 52 になります。

私はそれをやろうとしましたが、何らかの理由で右から左にずれていて、すべてめちゃくちゃです..何が間違っているのですか?

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


Thanks!
4

4 に答える 4

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;

}
于 2013-09-19T13:37:26.527 に答える
0

これを試してください.. TextChanged イベントで

textBoxX3.Text = Convert.ToInt64(textBoxX3.Text.Replace(",", "")).ToString("N0");
textBoxX3.SelectionStart = textBoxX3.Text.Length + 1;
于 2014-02-18T17:09:19.443 に答える