【问题标题】:WPF TabControl acceleration keys with WebBrowser control带有 WebBrowser 控件的 WPF TabControl 加速键
【发布时间】:2018-04-12 20:19:31
【问题描述】:

我有一个设置了加速键的 WPF TabControl - 因此用户可以通过按 A、B、C 和 D 切换到任何选项卡(无需按 Alt!)。
第三个选项卡包含 WebBrowser,如果用户在此 Web 浏览器的字段中键入任何与选项卡的加速键一致的字母,它会切换到另一个选项卡,而不是在 Google 搜索字段中键入:

有什么办法可以避免吗?

【问题讨论】:

  • 你有没有试过在切换标签后在网页浏览器控件上尝试.Focus()
  • @AlexanderRyanBaggett。在哪里处理这个?什么活动?
  • 在您的 TabItems 上尝试 UIElement.GotFocus 事件
  • 您能详细说明一下吗?我看不出它有什么帮助。

标签: wpf wpf-controls webbrowser-control tabcontrol keyboard-shortcuts


【解决方案1】:

找到了一个简单的解决方案。
AccessKeyPressed 处理程序附加到所有TabItems 并更改EventArgs 范围,前提是我们从带有标题“Tab_B”的TabItem 切换。

<TabControl>
    <TabItem Header="Tab_A" AccessKeyManager.AccessKeyPressed="TabItem_AccessKeyPressed"/>
    <TabItem Header="Tab_B" AccessKeyManager.AccessKeyPressed="TabItem_AccessKeyPressed">
        <WebBrowser Source="http://google.com"  />
    </TabItem>
    <TabItem Header="Tab_C" AccessKeyManager.AccessKeyPressed="TabItem_AccessKeyPressed"/>
    <TabItem Header="Tab_D" AccessKeyManager.AccessKeyPressed="TabItem_AccessKeyPressed"/>
</TabControl>

处理程序:

private void TabItem_AccessKeyPressed(object sender, AccessKeyPressedEventArgs e)
{
    var src = ((sender as TabItem)?.Parent as TabControl)?.SelectedItem as TabItem;
    if (src?.Header as string == "Tab_B")
        e.Scope = src;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 2017-11-12
    相关资源
    最近更新 更多