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

时间:2011-10-13 07:02:00

标签: c# .net wpf

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

我试过这样的光标位置,

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

并在稍后阶段从其他事件中退回,

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

这里的下划线变量是页面级变量。

此代码无效。还有其他方法吗?

4 个答案:

答案 0 :(得分:11)

您可以使用文本框的caretindex属性

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

答案 1 :(得分:5)

你只需要添加一行来设置文本框的焦点,否则一切正常。

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

答案 2 :(得分:0)

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

这些陈述足以完成req的事情。我在选择编写代码的事件时犯了错误。谢谢大家。

答案 3 :(得分:0)

对我来说,仅设置焦点无济于事,但滚动到插入符号则可以。

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