C# 如果删除最后一个字符并立即替换它,是否希望将键入位置移动到行尾#

C# 如果删除最后一个字符并立即替换它,是否希望将键入位置移动到行尾#,c#,textbox,C#,Textbox,我有一个文本框,每次你删除文本框中的最后一个数字时,它都会重置回0,但让人恼火的是当它替换它时;您键入的光标移动到0的左侧,使您以后键入的任何内容后面都有一个0,除非您在0后面单击。有没有可能这样做,当我删除最后一个数字时,它会回到新替换数字的右侧 private void iterations_TextChanged(object sender, EventArgs e) { resetToZero(iterations); } private

我有一个文本框,每次你删除文本框中的最后一个数字时,它都会重置回0,但让人恼火的是当它替换它时;您键入的光标移动到0的左侧,使您以后键入的任何内容后面都有一个0,除非您在0后面单击。有没有可能这样做,当我删除最后一个数字时,它会回到新替换数字的右侧

    private void iterations_TextChanged(object sender, EventArgs e)
    {
        resetToZero(iterations);
    }

    private void resetToZero(TextBox x)
    {
        if (x.Text == "")
        {
            x.Text = "0";
        }
    }

查看TextBox.SelectionStart和TextBox.SelectionLength属性。

查看TextBox.SelectionStart和TextBox.SelectionLength属性。

要将光标放在文本末尾,只需将
SelectionStart
设置为
1
,它位于
0
之后,或者更一般地说,您可以使用文本框的长度
text
属性:

private void resetToZero(TextBox x)
{
    if (x.Text == "")
    {
        x.Text = "0";
        x.SelectionStart = x.TextLength;;
    }
}
或者,要将零放在那里,然后自动选择文本,可以执行以下操作:

private void resetToZero(TextBox x)
{
    if (x.Text == "")
    {
        x.Text = "0";
        x.SelectionLength = x.TextLength;
    }
}

要将光标放在文本末尾,只需将
SelectionStart
设置为
1
,它位于
0
之后,或者更一般地说,您可以使用文本框
text
属性的长度:

private void resetToZero(TextBox x)
{
    if (x.Text == "")
    {
        x.Text = "0";
        x.SelectionStart = x.TextLength;;
    }
}
或者,要将零放在那里,然后自动选择文本,可以执行以下操作:

private void resetToZero(TextBox x)
{
    if (x.Text == "")
    {
        x.Text = "0";
        x.SelectionLength = x.TextLength;
    }
}

0
失去焦点且没有文本时,我会将其放入文本框中。这样
0
就不会干扰输入。我还将使用
SelectionStart
SelectionLength
在文本框获得焦点时选择整个文本(附录:可能只有当它具有
0
时),这样您就可以开始键入而不必担心
0
。虽然我说的更多的是关注用户体验,而不是回答您的问题。当
0
失去焦点且没有文本时,我会将其放在文本框中。这样
0
就不会干扰输入。我还将使用
SelectionStart
SelectionLength
在文本框获得焦点时选择整个文本(附录:可能只有当它具有
0
时),这样您就可以开始键入而不必担心
0
。虽然我说的更多的是用户体验,而不是你问题的答案。第二个例子看起来很好,我会试试看,谢谢第二个例子看起来很好,我会试试看,谢谢