当前位置: 首页 > 编程语言 > C#

Keyboard.FocusnotworkingontextboxinWPF分享

时间:2023-04-10 15:24:24 C#

Keyboard.FocusnotworkingontextboxinWPF'让我的应用程序按照我的计划运行。当用户按下ctrl+f时,我的wpf应用程序中会弹出一个小搜索框。我想要的只是插入符号在搜索框文本框内闪烁,准备接受任何用户输入而无需用户单击它。下面是文本框的xaml代码,它是可见的、启用的、可命中测试的、可制表位的和可聚焦的。在后面的代码中,当搜索框的可见性受到影响时,我会调用此方法。搜索框在应用程序的开头加载。//////处理因关注此视图而触发的事件。//////发件人。///关键事件参数。privatevoidOnIsVisibleChanged(objectsender,DependencyPropertyChangedEventArgsdependencyPropertyChangedEventArgs){if(!((bool)dependencyPropertyChangedEventArgs.NewValue)){返回;}SearchCriteriaTextBox.Focus();Keyboard.Focus(SearchCriteriaTextBox);SearchCriteriaTextBox.Select(0,0);如果(SearchCriteriaTextBox.Text.Length>0){SearchCriteriaTextBox.SelectAll}();问题是,代码被调用并且组件变为IsFocused=true但没有获得键盘焦点。我错过了什么吗?除非另一个控件无情地保持键盘焦点,否则我很确定我还没有编码为什么这段相当简单的代码不起作用。作为解决方法,您可以尝试使用Dispatcher将焦点设置到稍后的DispatcherPriority,例如InputDispatcher.BeginInvoke(DispatcherPriority.Input,newAction(delegate(){SearchCriteriaTextBox.Focus();//设置逻辑焦点Keyboard.Focus(SearchCriteriaTextBox);//设置键盘焦点}));从您的问题描述来看,您似乎没有设置键盘焦点。WPF可以有多个焦点范围,因此多个元素可以有逻辑焦点(IsFocused=true),但只有一个元素可以有键盘焦点并接收键盘输入。您发布的代码应该正确设置焦点,因此必须先发生一些事情才能将键盘焦点移出TextBox。通过将焦点设置为较晚的调度程序优先级,您将确保SearchCriteriaTextBox键盘焦点设置为最后完成。为了帮助我遇到这个问题的任何人,我的应用程序有一个主窗口,其中有多个用户控件放置在具有可见性数据绑定的单独网格中。因为在构建应用程序时存在网格,所以在构建应用程序时调用Loaded或Constructor上调用的.Focus(),而不是在它可见时调用。无论如何,我通过在网格的MouseEnter事件上调用.Focus()来修复它。对我来说很好用。以上是C#学习教程:Keyboard.FocusdoesnotworkonthetextboxinWPF。分享的所有内容,如果对大家有用,需要了解更多C#学习教程,希望大家多多关注——本文来自网络合集,不代表立场,如涉及侵权,敬请谅解点击右侧联系管理员删除。如需转载请注明出处: