我希望从 PreviewTextInput 处理程序创建一个新控件并将焦点设置到它。但即使在新控件上调用 Focus() 后,光标仍然位于旧文本框中。
处理程序 UserControl_PreviewTextInput 在包含此文本框的 UserControl 上注册(如果这很重要)。
private void UserControl_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
CodeLineControl el = new CodeLineControl();
container.Children.Insert(idx+1, el);
el.innerTextBox.Focus();
}
CodeLineControl 的定义如下(简化):
<UserControl ..>
<DockPanel Name="codeline" Background="AntiqueWhite" >
<TextBox Name="innerTextBox"/>
</DockPanel>
</UserControl>
Focus() 是否有一些我不知道的限制?我是否不允许将 Focus() 从 PreviewTextInput 处理程序中的 TextBox 移开?我不能将焦点设置在新创建的元素上吗?
这是我用来代替 Focus 的扩展方法:
public static void BackgroundFocus(this UIElement el)
{
Action a = () => el.Focus();
el.Dispatcher.BeginInvoke(DispatcherPriority.Background, a);
}
无需创建计时器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)