我有两个文本框。我有一个文本框的“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而不是插入符号应该位于单词之间的位置?
答案 0 :(得分:0)
这在c#express edition 2008中无效(无论是什么版本的WPF),所以这里最好的办法是切换到onTextChanged并在那里运行完全相同的代码,这是一种享受。显然很烦人的是你必须多次运行代码,而不是在失去焦点的情况下运行代码。当我得到时间时,我将检查它是否在c#express 2010中有效,因为我们正在升级(最终)