C# 在UWP应用程序中模拟键盘事件,如Keyup和keydown

C# 在UWP应用程序中模拟键盘事件,如Keyup和keydown,c#,uwp,C#,Uwp,如何在UWP应用程序中模拟键盘事件,如Keyup和keydown。我不想使用手动键盘,而是制作了自己的键盘,但我现在想在其中添加键盘事件。 我在uwp和SendKeys中没有找到任何方法。Send()方法也不适用于uwp 我不想使用手动键盘,而是制作了自己的键盘,但现在我想在其中添加键盘事件。我在uwp和SendKeys中没有找到任何方法。Send()方法也不适用于uwp 根据您的需求,您可以创建自定义事件处理程序来模拟自定义用户控件中的键盘KeyDown,keydup事件。关键点是何时调用自定

如何在UWP应用程序中模拟键盘事件,如Keyup和keydown。我不想使用手动键盘,而是制作了自己的键盘,但我现在想在其中添加键盘事件。 我在uwp和SendKeys中没有找到任何方法。Send()方法也不适用于uwp

我不想使用手动键盘,而是制作了自己的键盘,但现在我想在其中添加键盘事件。我在uwp和SendKeys中没有找到任何方法。Send()方法也不适用于uwp

根据您的需求,您可以创建自定义事件处理程序来模拟自定义用户控件中的键盘
KeyDown
keydup
事件。关键点是何时调用自定义事件处理程序。我已经创建了一个简单的示例,您可以参考

自定义键盘.xaml

<UserControl
    x:Class="UIKeyBoardTest.CustomKeyBoard"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:UIKeyBoardTest"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:control ="using:Microsoft.Toolkit.Uwp.UI.Controls"
    mc:Ignorable="d"
    d:DesignHeight="300"
    d:DesignWidth="400">
    <Grid>
        <GridView  VerticalAlignment="Center" HorizontalAlignment="Center" ItemClick="GridView_ItemClick"  IsItemClickEnabled="True">
            <GridView.ItemsPanel>
                <ItemsPanelTemplate>
                    <VariableSizedWrapGrid  MaximumRowsOrColumns="3" Orientation="Horizontal" />
                </ItemsPanelTemplate>
            </GridView.ItemsPanel>
            <GridView.ItemTemplate>
                <DataTemplate>
                    <StackPanel Background="White"
                BorderBrush="Black"
                BorderThickness="1">
                        <TextBlock Text="{Binding }" HorizontalAlignment="Center" TextAlignment="Center" VerticalAlignment="Center" FontSize="40"  Width="55" />
                    </StackPanel>
                </DataTemplate>
            </GridView.ItemTemplate>
            <x:String>1</x:String>
            <x:String>2</x:String>
            <x:String>3</x:String>
            <x:String>4</x:String>
            <x:String>5</x:String>
            <x:String>6</x:String>
            <x:String>7</x:String>
            <x:String>8</x:String>
            <x:String>9</x:String>
        </GridView>
    </Grid>
</UserControl>
用法

 <TextBox x:Name="box" PlaceholderText="Please input something" Margin="0,50,0,60" />
<local:CustomKeyBoard
    HorizontalAlignment="Center"
    VerticalAlignment="Center"
    BoilerEventLog="CustomKeyBoard_BoilerEventLog" />

private void CustomKeyBoard_BoilerEventLog(string value)
{
    box.Text = value;
}

私有void自定义键盘\u样板事件日志(字符串值)
{
文本=值;
}

我不想使用手动键盘,而是制作了自己的键盘,但现在我想在其中添加键盘事件。我在uwp和SendKeys中没有找到任何方法。Send()方法也不适用于uwp

根据您的需求,您可以创建自定义事件处理程序来模拟自定义用户控件中的键盘
KeyDown
keydup
事件。关键点是何时调用自定义事件处理程序。我已经创建了一个简单的示例,您可以参考

自定义键盘.xaml

<UserControl
    x:Class="UIKeyBoardTest.CustomKeyBoard"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:UIKeyBoardTest"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:control ="using:Microsoft.Toolkit.Uwp.UI.Controls"
    mc:Ignorable="d"
    d:DesignHeight="300"
    d:DesignWidth="400">
    <Grid>
        <GridView  VerticalAlignment="Center" HorizontalAlignment="Center" ItemClick="GridView_ItemClick"  IsItemClickEnabled="True">
            <GridView.ItemsPanel>
                <ItemsPanelTemplate>
                    <VariableSizedWrapGrid  MaximumRowsOrColumns="3" Orientation="Horizontal" />
                </ItemsPanelTemplate>
            </GridView.ItemsPanel>
            <GridView.ItemTemplate>
                <DataTemplate>
                    <StackPanel Background="White"
                BorderBrush="Black"
                BorderThickness="1">
                        <TextBlock Text="{Binding }" HorizontalAlignment="Center" TextAlignment="Center" VerticalAlignment="Center" FontSize="40"  Width="55" />
                    </StackPanel>
                </DataTemplate>
            </GridView.ItemTemplate>
            <x:String>1</x:String>
            <x:String>2</x:String>
            <x:String>3</x:String>
            <x:String>4</x:String>
            <x:String>5</x:String>
            <x:String>6</x:String>
            <x:String>7</x:String>
            <x:String>8</x:String>
            <x:String>9</x:String>
        </GridView>
    </Grid>
</UserControl>
用法

 <TextBox x:Name="box" PlaceholderText="Please input something" Margin="0,50,0,60" />
<local:CustomKeyBoard
    HorizontalAlignment="Center"
    VerticalAlignment="Center"
    BoilerEventLog="CustomKeyBoard_BoilerEventLog" />

private void CustomKeyBoard_BoilerEventLog(string value)
{
    box.Text = value;
}

私有void自定义键盘\u样板事件日志(字符串值)
{
文本=值;
}

你说的“制作我自己的键盘”是什么意思?我的意思是说我用字母和数字编程创建了简单的键盘。那么为什么不使用该控件中的事件呢?将您的代码附加到问题中,我刚刚使用XAML中的按钮控件创建了键盘,它的实现是用C#实现的。私有无效字母_Tapped(对象发送方,Windows.UI.Xaml.Input.tappedroutedventargs e)//按钮点击事件{键盘实现逻辑}您想做什么?您所说的“制作我自己的键盘”是什么意思?我的意思是说我用字母和数字编程创建了简单的键盘。那么为什么不使用该控件中的事件呢?将您的代码附加到问题中,我刚刚使用XAML中的按钮控件创建了键盘,它的实现是用C#实现的。私有无效字母_Tapped(object sender,Windows.UI.Xaml.Input.tappedroutedventargs e)//按钮点击事件{键盘实现逻辑}您想做什么?是否有方法触发Windows快捷方式,例如用另一个键触发Windows键?是否有方法触发Windows快捷方式,例如,Windows键与另一个键?