c# - 无法将键盘焦点设置为文本框
问题描述
我正在使用 System.Windows.Controls 命名空间来创建一个包含多个 MenuItem 的 ContextMenu。其中一个 MenuItems 包含一个 TextBox 作为其标题,单击该标题时,应给予键盘焦点,以便用户可以键入它来指定配置设置。它成功检测到鼠标点击,但让我感到困惑的是我无法将键盘焦点设置在它上面。我已经尝试了我在网上看到的所有东西,但不幸的是收效甚微。
下面的代码显示了我尝试给它键盘焦点的不同方法。我只能通过其中一项功能获得逻辑焦点,但没有什么可以正确设置键盘焦点。我还在 TextBox 的父项指定项上尝试了所有这些功能,但没有什么不同。
//*Upon catching a mouse click event:*
MenuItem specifyItem = //MenuItem sent by the event;
TextBox specifyBox = //specifyItem's header;
bool hasLogicalFocus; //store results of attempting logical focus
bool hasKeyboardFocus; //store results of attempting keyboard focus
//attempt UIElement.Focus(); fails both
specifyBox.Focus();
hasLogicalFocus = specifyBox.IsFocused; //false
hasKeyboardFocus = specifyBox.IsKeyboardFocused; //false
//attempt Keyboard.Focus(specifyBox); fails both
Keyboard.ClearFocus(); // <-- did not make a difference
Keyboard.Focus(specifyBox);
hasLogicalFocus = specifyBox.IsFocused; //false
hasKeyboardFocus = specifyBox.IsKeyboardFocused; //false
//attempting asynchronous with dispatcher; fails both
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Input, new Action(delegate ()
{
specifyBox.Focus(); // Set Logical Focus
Keyboard.Focus(specifyBox); // Set Keyboard Focus
}));
hasLogicalFocus = specifyBox.IsFocused; //false
hasKeyboardFocus = specifyBox.IsKeyboardFocused; //false
/*This actually does set logical focus, but this isn't
* helpful because I need keyboard focus
*/
FocusManager.SetFocusedElement(specifyItem, specifyBox);
hasLogicalFocus = specifyBox.IsFocused; //true!
//still doesn't have keyboard focus
我希望将specifyBox 的键盘焦点设置为true,以便用户可以键入它,但是在这些操作之后布尔型specifyBox.IsKeyboardFocused 始终为false,并且它不会捕获键盘上的任何键。
解决方案
推荐阅读
- ruby-on-rails - 错误显示如下:字段“signoutUser”不接受参数“输入”
- r - 使用 rvest 包的 url 表
- vb.net - 如何以编程方式在 Excel 电子表格内部进行排序?
- ruby-on-rails - Shrine - 使用 Cloudfront 的派生端点和完整路径 URL
- templates - 在 Arc 中为泛型类型包装堆分配内存?
- node.js - Chai 的期望等价于 Node 的 assert.ifError
- datetime - 在 Google 表格中使用标准日期的查询中使用 Today() 函数
- javascript - 如何在视图中解决 net::ERR_ABORTED 404 (Not Found),错误不要让显示 css Laravel 6.0?
- python - 我的 Kruskal-Wallis 课程出了什么问题?
- arrays - 替换 Google 表格中的单元格特定分隔符 - 21.06.2019 至 21/06/2019