Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取和设置WPF文本框的当前光标位置_C#_.net_Wpf - Fatal编程技术网

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

C# 如何获取和设置WPF文本框的当前光标位置,c#,.net,wpf,C#,.net,Wpf,我想从WPF文本框中获取当前光标位置。如果TextBox包含文本abhishek,并且光标在abhi之后闪烁,那么我需要该索引,以便以后以编程方式清除TextBox并以编程方式分配一些其他或相同的文本后,我希望光标在4个字符之后闪烁 我试过像这样获取光标位置 _tempFuncName = txtFunctionName.Text; _cursorPosition = txtFunctionName.SelectionStart; _selectionLength = txtFunctionN

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

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

_tempFuncName = txtFunctionName.Text;
_cursorPosition =  txtFunctionName.SelectionStart;
_selectionLength = txtFunctionName.SelectionLength;
txtFunctionName.Text = _tempFuncName;
txtFunctionName.SelectionStart = _cursorPosition;
txtFunctionName.SelectionLength  = _selectionLength;
在以后的某个阶段,从其他类似事件中退缩

_tempFuncName = txtFunctionName.Text;
_cursorPosition =  txtFunctionName.SelectionStart;
_selectionLength = txtFunctionName.SelectionLength;
txtFunctionName.Text = _tempFuncName;
txtFunctionName.SelectionStart = _cursorPosition;
txtFunctionName.SelectionLength  = _selectionLength;
这里下划线变量是页面级变量


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

您只需添加一行即可设置文本框的焦点,否则一切正常

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

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

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

这些语句足以完成req任务。我在选择事件来编写代码时犯了错误。谢谢大家。

对我来说,设置焦点并没有什么帮助,但滚动到插入符号确实有帮助

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

这个答案与OP标题中的答案相匹配,这也是我一直在寻找的。