本文为系列文章第 6篇介绍Silverlight中键盘处理事件在Silverlight 2中支持KeyDown和KeyUp两个事件
声明事件 所有事件声明过程都是样在XAML中或者是在代码中进行注册
<Canvas x:Name="LayoutRoot" Background="#46461F">
<Ellipse x:Name="ellipse" Width="120" Height="120" Fill="Orange"
Canvas.Top="50" Canvas.Left="160"
Stroke="White" StrokeThickness="2"
KeyUp="ellipse_KeyUp"
KeyDown="ellipse_KeyDown"/>
</Canvas>
或者在代码中注册:public partial Page : UserControl
{
public Page
{
InitializeComponent;
this.ellipse.KeyUp KeyEventHandler(ellipse_KeyUp);
this.ellipse.KeyDown KeyEventHandler(ellipse_KeyDown);
}
private void ellipse_KeyUp(object sender, KeyEventArgs e)
{
}
private void ellipse_KeyDown(object sender, KeyEventArgs e)
{
}
}
使用事件参数KeyEventArgs 使用事件参数可以获取到事件数据可以使用属性有Key、PlatformKeyCode、Handled、Sourceprivate void ellipse_KeyUp(object sender, KeyEventArgs e)
{
(e.Key Key.R)
{
//......
}
(e.Key Key.Ctrl && e.Key Key.U)
{
//......
}
}
在事件数据中Handled有时候非常有用可以用来判断事件是否已经处理键盘路由事件 键盘事件KeyDown和KeyUp都支持路由事件如下面举例
<Canvas x:Name="LayoutRoot" Background="#46461F" KeyUp="LayoutRoot_KeyUp">
<TextBox x:Name="textbox" Width="200" Height="40"
Canvas.Top="80" Canvas.Left="80"/>
<Button x:Name="button" Width="100" Height="40"
Canvas.Top="80" Canvas.Left="280"
Background="Red" Margin="20 0 0 0" Content="Submit"/>
<TextBlock x:Name="Status" Foreground="White" Text="Status"
Canvas.Left="80" Canvas.Top="200"/>
</Canvas>
为Canvas注册了个KeyUp事件编写事件处理private void LayoutRoot_KeyDown(object sender, KeyEventArgs e)
{
(e.Key != Key.Unknown)
{
String msg = "The key " + e.Key.;
msg " was pressed while focus was _disibledevent="学Silverlight 2系列(6):键盘事件处理" />
结束语 有关键盘事件都简单介绍到这儿希望对大家有用
延伸阅读
最新评论