2010-06-01 62 views
0

我有两个文本框。我有一个文本框的“onLostFocus”的事件设置。如果我完成了一个接一个地输入一个单词的话,一切都很好。在我点击第一个文本框的时候,我想点击一半的单词(对用户来说是完全合理的)。当这里的onLostFocus事件触发是我的代码:在WPF中失去焦点时获取插入符号位置

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; 

插入符号指数收益为0时,我打电话focusedTextBox.CaretIndex。此时,我需要刷新整个表单并设置参数和其他所有类型的whizzery,存储texbox索引和插入位置以使所有内容都恢复原样。为什么它返回0而不是插入符号应位于该词之间的位置?

+0

我刚刚尝试过使用WPF 3.5 SP1:CaretIndex始终返回焦点文本框的正确插入符号位置。仅当文本框第一次被聚焦时才返回0。 – 2010-06-01 17:43:25

+0

限于此版本:( – DrLazer 2010-06-02 10:06:58

回答

0

这只是在c#express edition 2008(不管WPF的版本是什么)中都不起作用,所以最好在这里做的是切换到onTextChanged并在那里运行完全相同的代码,这是一种享受。它显然很烦人,你必须多运行一次代码,而不是失去焦点。当我得到时间,我会检查它是否在c#express 2010中工作,因为我们正在升级(最终)