按下键时激活按钮 C# Universal App
Activate button when key is pressed C# Universal App
我用 C# 在 Windows Universal App 上开发了一款游戏。我的界面上有四个按钮(左、右、上、下)用于在我的地图上移动角色。
我的问题是:如何使用键盘箭头激活我的函数 Move()?
我从网上尝试了很多解决方案来让按键被按下,但大多数只涉及输入表单...
您可以使用 KeyDown 激活键盘。
xaml 是
<Page
x:Class="ktbkwbconcern.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:ktbkwbconcern"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" KeyDown="Grid_OnKeyDown">
<Button x:Name="btn" Content="K">
<Button.RenderTransform>
<CompositeTransform></CompositeTransform>
</Button.RenderTransform>
</Button>
<Grid VerticalAlignment="Bottom">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="0" Content="left" Click="Button_OnClick"></Button>
<Button Grid.Row="1" Grid.Column="0" Content="up" Click="Button_OnClick"></Button>
<Button Grid.Row="0" Grid.Column="1" Content="down" Click="Button_OnClick"></Button>
<Button Grid.Row="1" Grid.Column="1" Content="right" Click="Button_OnClick"></Button>
</Grid>
</Grid>
</Page>
它会上下移动 btn 使用按钮。
你应该写代码:
private void Grid_OnKeyDown(object sender, KeyRoutedEventArgs e)
{
if (e.Key == VirtualKey.Left)
{
Move(-1, 0);
}
else if (e.Key == VirtualKey.Right)
{
Move(1, 0);
}
else if (e.Key == VirtualKey.Up)
{
Move(0, -1);
}
else if (e.Key == VirtualKey.Down)
{
Move(0, 1);
}
}
private void Move(int x, int y)
{
var temp = btn.RenderTransform as CompositeTransform;
temp.TranslateX += x;
temp.TranslateY += y;
}
private void Button_OnClick(object sender, RoutedEventArgs e)
{
var b = sender as Button;
if (b != null)
{
string str = b.Content as string;
if (str == "up")
{
Move(0, -1);
}
else if (str == "down")
{
Move(0, 1);
}
else if (str == "left")
{
Move(-1, 0);
}
else if (str == "right")
{
Move(1, 0);
}
}
}
}
您应该使用 Grid.KeyDown 获取密钥并使 btn 移动。
如果对代码没有概念,请与我联系。
我用 C# 在 Windows Universal App 上开发了一款游戏。我的界面上有四个按钮(左、右、上、下)用于在我的地图上移动角色。
我的问题是:如何使用键盘箭头激活我的函数 Move()?
我从网上尝试了很多解决方案来让按键被按下,但大多数只涉及输入表单...
您可以使用 KeyDown 激活键盘。
xaml 是
<Page
x:Class="ktbkwbconcern.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:ktbkwbconcern"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" KeyDown="Grid_OnKeyDown">
<Button x:Name="btn" Content="K">
<Button.RenderTransform>
<CompositeTransform></CompositeTransform>
</Button.RenderTransform>
</Button>
<Grid VerticalAlignment="Bottom">
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="0" Content="left" Click="Button_OnClick"></Button>
<Button Grid.Row="1" Grid.Column="0" Content="up" Click="Button_OnClick"></Button>
<Button Grid.Row="0" Grid.Column="1" Content="down" Click="Button_OnClick"></Button>
<Button Grid.Row="1" Grid.Column="1" Content="right" Click="Button_OnClick"></Button>
</Grid>
</Grid>
</Page>
它会上下移动 btn 使用按钮。
你应该写代码:
private void Grid_OnKeyDown(object sender, KeyRoutedEventArgs e)
{
if (e.Key == VirtualKey.Left)
{
Move(-1, 0);
}
else if (e.Key == VirtualKey.Right)
{
Move(1, 0);
}
else if (e.Key == VirtualKey.Up)
{
Move(0, -1);
}
else if (e.Key == VirtualKey.Down)
{
Move(0, 1);
}
}
private void Move(int x, int y)
{
var temp = btn.RenderTransform as CompositeTransform;
temp.TranslateX += x;
temp.TranslateY += y;
}
private void Button_OnClick(object sender, RoutedEventArgs e)
{
var b = sender as Button;
if (b != null)
{
string str = b.Content as string;
if (str == "up")
{
Move(0, -1);
}
else if (str == "down")
{
Move(0, 1);
}
else if (str == "left")
{
Move(-1, 0);
}
else if (str == "right")
{
Move(1, 0);
}
}
}
}
您应该使用 Grid.KeyDown 获取密钥并使 btn 移动。
如果对代码没有概念,请与我联系。