在Windows 10 C#UWP应用程序中按Ctrl + Key单击后,我该怎么做才能举起活动?

时间:2018-03-30 08:50:21

标签: c# windows visual-studio uwp

我想要的是,每当用户点击快捷按钮时,我的webview(在我的应用内)都应导航到网页,例如 - CTRL + H ,同时聚焦在webview上。

这是我到目前为止编写的代码 -

for webview(XAML) -

enter image description here

用于密钥(.cs) -

enter image description here

这不起作用,请建议任何更正。

修改 - 根据Mark W的建议,我将我的c#代码更改为 -

private static bool IsCtrlKeyPressed()
{
    var ctrlState = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Control);
    return (ctrlState & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down;
}

private void taga_keyUp(object sender, KeyRoutedEventArgs e)
{
    if (IsCtrlKeyPressed())
    {
        switch (e.Key)
        {
            case VirtualKey.H: taga.Navigate(new Uri("http://www.bing.com")); break;           
}
    }
}

这也不起作用。

2 个答案:

答案 0 :(得分:0)

您可以根据文档使用GetKeyPressed方法来检测修饰键。

https://docs.microsoft.com/en-us/windows/uwp/design/input/keyboard-events

摘录:

private static bool IsCtrlKeyPressed()
{
    var ctrlState = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Control);
    return (ctrlState & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down;
}

答案 1 :(得分:0)

根据WebView课程的评论:

  

如事件表中所示,WebView不支持从UIElement继承的大多数用户输入事件,例如KeyDown,KeyUp和PointerPressed。

因此KeyUp可能不适用于WebView。常见的解决方法是将InvokeScriptAsync与JavaScript eval函数一起使用以使用HTML事件处理程序,并使用HTML事件处理程序中的window.external.notify来使用WebView.ScriptNotify通知应用程序。对于您的方案,您可以考虑使用CoreWindow来监听KeyUp事件,而不是作为解决方法。例如:

public MainPage()
{
    this.InitializeComponent();
    Window.Current.CoreWindow.KeyUp += CoreWindow_KeyUp;
}

private void CoreWindow_KeyUp(CoreWindow sender, KeyEventArgs args)
{        
    if (IsCtrlKeyPressed())
    {
        switch (args.VirtualKey)
        {
            case VirtualKey.H: taga.Navigate(new Uri("http://www.bing.com")); break;
        }
    }
}
private static bool IsCtrlKeyPressed()
{
    var ctrlState = CoreWindow.GetForCurrentThread().GetKeyState(VirtualKey.Control);
    return (ctrlState & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down;
}