C# 在文本框中查找并设置指示器的位置

C# 在文本框中查找并设置指示器的位置,c#,winforms,C#,Winforms,我有一个带有文本框的程序,当我得到空间输入时,我需要编辑文本 所以我这样做了,但是指示器返回到文本的开头,这不是一个好的人机界面 我想知道是否有一种方法可以在不更改指示器位置的情况下编辑文本,或者是否有一种方法可以在文本框中设置指示器位置 我试着用几种方法编辑文本,但它们都会导致指示器返回到文本的开头 我找不到影响指示器位置的方法,所以我猜这是不可能的,但我可能错了 请提供帮助。尝试设置选项。这会将光标设置到第5个位置,但不选择任何内容: textBox1.Select(5, 0); 只需确保

我有一个带有
文本框的程序,当我得到空间输入时,我需要编辑文本

所以我这样做了,但是指示器返回到文本的开头,这不是一个好的人机界面

我想知道是否有一种方法可以在不更改指示器位置的情况下编辑文本,或者是否有一种方法可以在
文本框中设置指示器位置

我试着用几种方法编辑文本,但它们都会导致指示器返回到文本的开头

我找不到影响指示器位置的方法,所以我猜这是不可能的,但我可能错了


请提供帮助。

尝试设置选项。这会将光标设置到第5个位置,但不选择任何内容:

textBox1.Select(5, 0);
只需确保这是在将控件返回给用户之前发生的最后一件事。如有必要,可同时呼叫
Focus


在您的情况下,您还需要在添加/修改文本之前跟踪该位置应该是什么?之后呢?只需将
5
替换为该数字。

尝试设置选项。这会将光标设置到第5个位置,但不选择任何内容:

textBox1.Select(5, 0);
只需确保这是在将控件返回给用户之前发生的最后一件事。如有必要,可同时呼叫
Focus

在您的情况下,您还需要在添加/修改文本之前跟踪该位置应该是什么?之后呢?用这个数字替换
5

试试这个

int startPosition = textBox1.SelectionStart;
int selectionLength = textBox1.SelectionLength;

//do what ever you need
textBox1.Text = textBox1.Text.ToUpper();

//place cursor back in position
textBox1.Select(startPosition, selectionLength);
希望有帮助。

试试这个

int startPosition = textBox1.SelectionStart;
int selectionLength = textBox1.SelectionLength;

//do what ever you need
textBox1.Text = textBox1.Text.ToUpper();

//place cursor back in position
textBox1.Select(startPosition, selectionLength);
希望能有帮助