(6):Silverlight 2 键盘事件处理

news/2025/2/25 3:03:08

概述

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

本文出自 51CTO.COM技术博客

转载于:https://www.cnblogs.com/GT_Andy/archive/2009/07/28/1922030.html


http://www.niftyadmin.cn/n/675101.html

相关文章

权证基础知识学习(三)

认股权证的买入时机不论是 股票还是认股权证&#xff0c;投资者都经常会为何时才是买入的最佳时机而困扰&#xff0c;总希望找到一个最佳的时机才肯入市。无疑&#xff0c;能找到一个最佳的入市时机就可以赚尽回报&#xff0c;但究竟什么时候才是最佳买入时机呢&#xff1f;总体…

java 双适配器模式,初识Java设计模式适配器模式

【正文】我们知道&#xff0c;Android中最重要也是最难用的UI控件就是ListView列表控件&#xff0c;而要想灵活运用它&#xff0c;则必须要用到适配器adapter&#xff0c;所以&#xff0c;我觉得还是很有必要来学习一下Java当中的适配器模式(不管以后能不能用到)&#xff0c;毕…

曾经的故乡

1998年的乌鲁木齐&#xff0c;现在已经变得俺都认不得啦。没有机会在她的金色季节回去&#xff0c;只能贴这些老照片&#xff0c;聊慰相思之意。一、妖魔山及乌鲁木齐火车站二、市政府&#xff08;后面是乌鲁木齐电视台的发射塔&#xff09;三、红山及乌鲁木齐——昌吉一级公路…

php 符号怎么用,PHP中基本符号及使用方法

5.批量输出HTML内容&#xff01;echo <<< EOTHTML输出内容。。。//这里注释照样输出&#xff01;EOT;Print <<HTML输出内容。。。//这里注释照样输出&#xff01;EOT;(注意&#xff1a;内部包含变量用“{变量}”)6.判断文件是否存在并且输出内容$FileName"…

权证是如何获利的?买权证用原来的深沪股东卡可以吗?

行权是怎么回事?怎么到期不行权就血本无归拉? 他跟股票在获利上有何不同?权证是如何获利的? ——和股票一样&#xff0c;高抛低吸&#xff1b; 买权证用原来的深沪股东卡可以吗? ——是的&#xff0c;但要到券商营业厅开通权证交易&#xff0c;在一份“权证交易风险揭示书…

人对阶级的演绎

2004.9.6 发表于加西 【光的演绎, 2004, 人物篇】转载于:https://www.cnblogs.com/chahua/archive/2009/07/29/1533623.html

一个投行顾问给创业者的五条建议

作为投资银行顾问&#xff0c;我负责的主要业务中有一块是投融资中介业务&#xff0c;也就是接受项目方的委托为其寻找投资者或资金&#xff0c;或者是接受资金方的委托为其物色适合投资的项目。4、创业者几乎没有自己的创业资金   创业者往往以为 <script type"text…

php 实例化 redis,tp5 实例化redis 出错,求解汗血宝马

框架内缓存驱动redis不能满足需要&#xff0c;想要自己连接redis,在助手函数中新增load_redis 函数代码如下/*** lubTicket redis 操作API* param string $apiport 要操作的接口* param string $key 键名* param string $value 键值* param string $time 有效时间…