zoukankan      html  css  js  c++  java
  • 一步一步学Silverlight 2系列(6):键盘事件处理

    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://terrylee.blog.51cto.com/342737/67225

    概述

    Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlight 2系列》文章带您快速进入Silverlight 2开发。
    本文为系列文章第六篇,介绍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 class Page : UserControl
                {
                public Page()
                {
                InitializeComponent();
                this.ellipse.KeyUp += new KeyEventHandler(ellipse_KeyUp);
                this.ellipse.KeyDown += new KeyEventHandler(ellipse_KeyDown);
                }
                private void ellipse_KeyUp(object sender, KeyEventArgs e)
                {
                }
                private void ellipse_KeyDown(object sender, KeyEventArgs e)
                {
                }
                }

    使用事件参数KeyEventArgs

    使用事件参数可以获取到事件数据,可以使用的属性有Key、PlatformKeyCode、Handled、Source。
    private void ellipse_KeyUp(object sender, KeyEventArgs e)
                {
                if (e.Key == Key.R)
                {
                //......
                }
                else if(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)
                {
                if (e.Key != Key.Unknown)
                {
                String msg = "The key " + e.Key.ToString();
                msg += " was pressed while focus was on " + (e.Source as FrameworkElement).Name;
                statusTextBlock.Text = msg;
                }
                }
    运行程序,当文本框获得焦点并输入t时
     
    按钮获得焦点
     

    结束语

    关于键盘事件都简单的介绍到这儿,希望对大家有用。

    本文出自 “TerryLee技术专栏” 博客,请务必保留此出处http://terrylee.blog.51cto.com/342737/67225

  • 相关阅读:
    【HDOJ】2774 Shuffle
    【POJ】2170 Lattice Animals
    【POJ】1084 Square Destroyer
    【POJ】3523 The Morning after Halloween
    【POJ】3134 Power Calculus
    【Latex】如何在Latex中插入伪代码 —— clrscode3e
    【HDOJ】4801 Pocket Cube 的几种解法和优化
    【HDOJ】4080 Stammering Aliens
    【HDOJ】1800 Flying to the Mars
    SQL语法
  • 原文地址:https://www.cnblogs.com/hdjjun/p/1361504.html
Copyright © 2011-2022 走看看