如何获取和设置WPF文本框的当前光标位置

本文关键字:文本 位置 光标 WPF 设置 何获取 获取 | 更新日期: 2023-09-27 18:11:19

我想从WPF文本框中获取当前光标位置。如果TextBox包含文本abhishek,并且光标在abhi之后闪烁,那么我想要该索引,以便稍后在以编程方式清除TextBox并以编程方式分配一些其他或相同的文本之后,我希望使光标在4个字符之后闪烁。

我试过这样获取光标位置,

_tempFuncName = txtFunctionName.Text;
_cursorPosition =  txtFunctionName.SelectionStart;
_selectionLength = txtFunctionName.SelectionLength;

在其他类似事件的后期阶段,

txtFunctionName.Text = _tempFuncName;
txtFunctionName.SelectionStart = _cursorPosition;
txtFunctionName.SelectionLength  = _selectionLength;

此处下划线变量是页面级别的变量。

此代码不起作用。还有其他方法吗?

如何获取和设置WPF文本框的当前光标位置

您可以使用文本框的插入索引属性

//You can set this property on some event
NumberOfDigits.CaretIndex = textbox.Text.Length;

您只需要添加一行就可以将焦点放在文本框上,否则一切都很好。

txtFunctionName.Text = _tempFuncName; 
txtFunctionName.SelectionStart = _cursorPosition; 
txtFunctionName.SelectionLength  = _selectionLength ; 
txtFunctionName.Focus();
txtFunctionName.Text = _tempFuncName; 
txtFunctionName.SelectionStart = _cursorPosition; 
txtFunctionName.SelectionLength  = _selectionLength ; 

这些语句足以完成req操作。我在选择event编写代码时犯了一个错误。谢谢大家。

对我来说,设置焦点没有帮助,但滚动到插入符号有帮助。

txt_logArea.Select(txt_logArea.Text.Length, 0);
txt_logArea.ScrollToCaret();