本节举一个使用键盘事件的示例,很简单,就是简单的处理按键的事件,通过获取KeyEventArgs类型的属性来获取键值信息,示例效果如图所示。

在该示例中,当单击任何键盘时,会在文本块中显示该KeyboardEventArgs类的四个参数的值,如果按下的值为Ctrl+C,则会隐藏矩形。如果按下Ctrl+V,则重新显示矩形,形成类似复制和粘贴的效果。
示例的XAML代码简单的绘制了一个矩形和两个TextBlock对象,代码如下所示。
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Name="parentCanvas"
Loaded="Page_Loaded"
x:Class="KeyBoardDemo1.Page;assembly=ClientBin/KeyBoardDemo1.dll"
Width="640"
Height="480"
Background="White"
>
<!--myTextBlock用于显示按键值的文本-->
<TextBlock Canvas.Left="200"
x:Name="myTextBlock"
Text="Display KeyDown event arguments" />
<!--本Canvas用于实现一个按钮效果-->
<Canvas Width="278" Height="58" Canvas.Left="166" Canvas.Top="50" x:Name="Btn1">
<Rectangle Width="276" Height="58" Fill="#FFCC2B2B" Stroke="#FF000000" x:Name="Rec1"/>
<TextBlock Width="200" Height="24" TextWrapping="Wrap" x:Name="Txt1" Canvas.Left="87" Canvas.Top="17">
<Run Text="Press Ctrl+C to copy"/></TextBlock>
</Canvas>
</Canvas>
本示例分别处理了根画布的KeyUp和KeyDown事件,KeyUp事件用于实现复制效果,KeyDown事件则用于在TextBlock上显示按钮信息,代码如下所示。
{
public partial class Page : Canvas
{
public void Page_Loaded(object o, EventArgs e)
{
// Required to initialize variables
InitializeComponent();
this.KeyDown += new KeyboardEventHandler(Page_KeyDown);
this.KeyUp += new KeyboardEventHandler(Page_KeyUp);
}
//当键盘被释放时
void Page_KeyUp(object sender, KeyboardEventArgs e)
{
//当Ctrl+V键按下并释放时
if ((e.Key == 51) && (e.Ctrl == true))
{
Btn1.Opacity = 1;
}
//当Ctrl+C键按下并释放时
if((e.Key==32)&&(e.Ctrl==true))
{
Btn1.Opacity = 0;
}
}
//处理KeyDown事件,通过KeyboardEventArgs获取键盘信息
void Page_KeyDown(object sender, KeyboardEventArgs e)
{
//获取Key信息
string msg = "key:" + e.Key.ToString();
//PlatformKeyCode信息
msg += "platformkeycode:" + e.PlatformKeyCode.ToString();
//获取Shift信息
msg += "shift:" + e.Shift.ToString();
//获取Ctrl的信息
msg += "ctrl:" + e.Ctrl.ToString() ;
//输出到文本文件
myTextBlock.Text = msg;
}
}
}
本文介绍了一个简单的键盘事件处理示例,演示了如何通过KeyEventArgs类获取按键信息,并实现了类似复制和粘贴的功能。
934

被折叠的 条评论
为什么被折叠?



