在WPF中失去焦点时获取插入位置

时间:2010-06-01 11:58:13

标签: c# wpf user-interface

我有两个文本框。我有一个文本框的“onLostFocus”的事件设置。如果我一个接一个地在两个盒子里输入一个单词,那么一切都很顺利。在我点击第一个文本框的时候,我想点击这个词的中途(对于用户来说是完全合理的事情)。当onLostFocus事件触发时,这是我的代码:

void tbox_LostFocus(object sender, RoutedEventArgs e)
      {
         IInputElement focusedelement = FocusManager.GetFocusedElement(this);
         if (focusedelement is TextBox)
         {
            TextBox focusedTextBox = focusedelement as TextBox;
            int focusIndex = m_commandsStacker.Children.IndexOf(focusedTextBox);
            int caretIndex = focusedTextBox.CaretIndex;

当我调用focusedTextBox.CaretIndex时,插入符索引返回0。在那一点上,我需要刷新整个表单并设置参数和所有其他类型的whizzery,存储texbox索引和插入位置以使所有内容恢复原状。为什么它会返回0而不是插入符号应该位于单词之间的位置?

1 个答案:

答案 0 :(得分:0)

这在c#express edition 2008中无效(无论是什么版本的WPF),所以这里最好的办法是切换到onTextChanged并在那里运行完全相同的代码,这是一种享受。显然很烦人的是你必须多次运行代码,而不是在失去焦点的情况下运行代码。当我得到时间时,我将检查它是否在c#express 2010中有效,因为我们正在升级(最终)