UWP中的键盘快捷键

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UWP中的键盘快捷键相关的知识,希望对你有一定的参考价值。

我在usercontrol中定义了一个KeyDown事件。按Enter键时,它会起作用。我希望它还能处理ctrl + v组合键,以便粘贴复制的文本并执行某些操作。说明:我的KeyDown事件处理程序接收到一个按下的键,如果它是Enter,它获取该控件中的当前焦点(例如,专注于某些textBox),检查TextBox“X”中是否有任何数据,如果是,另一个TextBox是自动完成的。我需要在TextBox“X”中插入文本时,自动完成TextBox的其余部分。如何强制程序并执行插入并执行我的自动完成代码?

private async void OnKeyDown(object sender, KeyRoutedEventArgs e)
{
    if (e.Key != VirtualKey.Enter) return;

    var focusedElement = FocusManager.GetFocusedElement();

    if (focusedElement == LocationName || focusedElement == AddressTextBox || 
        focusedElement == Latitude || focusedElement == Longitude)
    {
        e.Handled = true;
    }

    if (IsAddressTextValid)
    {
        var mapLocation = await FindFirstMapLocationAsync(AddressTextBox.Text);

        if (mapLocation != null)
        {
            LatitudeText = mapLocation.Point.Position.Latitude.ToString();
            LongitudeText = mapLocation.Point.Position.Longitude.ToString();
        }
    }
}
答案

要处理Ctrl + V,实际上Justin有一个post可以帮助。

 Window.Current.CoreWindow.KeyDown += (s, e) =>
        {
            var ctrl = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control);
            if (ctrl.HasFlag(CoreVirtualKeyStates.Down) && e.VirtualKey == VirtualKey.V)
            {
                // do your stuff
                Debug.WriteLine("ctrl+V has been triggered");
            }
            if(e.VirtualKey==VirtualKey.Enter)
            {
                Debug.WriteLine("Enter triggered");
            }

        };

但是对于如何强制更新其他文本框,不太确定你的逻辑。更改文本不适合您?

以上是关于UWP中的键盘快捷键的主要内容,如果未能解决你的问题,请参考以下文章

使用 Git 来管理 Xcode 中的代码片段

如何使用快捷键(只有键盘没有鼠标)更改 css 文件中的颜色类型(rgb、hsl、hex)?代码

Xamarin.Forms.UWP 数字键盘仅在软键盘上

Windows 10 应用开发使用快捷访问键

[UWP小白日记-15]在UWP手机端实时限制Textbox的输入

如何在所有应用程序中仅使用 NumericPin 键盘? UWP