我有一个windows窗体文本框,后台线程每秒更新其值。
如果我将光标放在文本框中,它将在下次更新时松开当前位置。文本选择也是如此。
我试着那样解决它

    protected void SetTextProgrammatically(string value)
    {
        // save current cursor position and selection
        int start = textBox.SelectionStart;
        int length = textBox.SelectionLength;

        // update text
        textBox.Text = value;

        // restore cursor position and selection
        textBox.SelectionStart = start;
        textBox.SelectionLength = length;
    }

大多数时候都很有效。以下是不起作用的情况:
1)我将光标放在文本框中文本的末尾
2)按SHIFT键并使用选择将无法正常工作。
看起来组合SelectionStart=10SelectionLength=1会自动将光标移动到位置11(而不是我希望的10)。
如果有什么我能做的,请告诉我!我使用的是framework.net 2.0。
必须有一种方法来设置文本框中的光标位置,而不是SelectionStart+SelectionLength

最佳答案

//save position
            bool focused = textBox1.Focused;
            int start = textBox1.SelectionStart;
            int len = textBox1.SelectionLength;
            //do your work
            textBox1.Text = "duviubobioub";
            //restore
            textBox1.SelectionStart = start;
            textBox1.SelectionLength = len ;
            textBox1.Select();

08-06 07:24