一步一步学Silverlight 2系列(6):键盘事件处理

一步一步学Silverlight 2系列(6):键盘事件处理

概述

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_Silverlight2_0037

按钮获得焦点

TerryLee_Silverlight2_0038

结束语

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

下一篇:一步一步学Silverlight 2系列(7):全屏模式支持

作者:TerryLee
出处:http://terrylee.cnblogs.com 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/meimao5211/p/3426931.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261053.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32堆栈溢出的问题

在程序中出现栈溢出的情况&#xff0c;就是分配局部变量时因为内存溢出而重启&#xff0c;局部变量分配在栈中&#xff0c;栈区域满了导致溢出&#xff0c;需要修改startup_stm32f10x_hd.s中&#xff0c;或startup_stm32f10x_ld.s,startup_stm32f10x_md.s,具体文件按要看CPU是否…

块分割,维特比算法小结

学习总结 在ER中&#xff0c;有一类算法依靠参考结构化数据库的模型实现&#xff0c;以便提高ER的速度。但是这类算法常常在运行中产生了大量重复计算&#xff0c;降低了效率。由此&#xff0c;通过介绍以下方法&#xff0c;来解决这个问题&#xff1a; 块分割 给定的字符串&am…

关于URL编码

一、问题的由来 URL就是网址&#xff0c;只要上网&#xff0c;就一定会用到。 一般来说&#xff0c;URL只能使用英文字母、阿拉伯数字和某些标点符号&#xff0c;不能使用其他文字和符号。比如&#xff0c;世界上有英文字母的网址 “http://www.abc.com”&#xff0c;但是没有希…

C语言ffmpeg合并多个视频,ffmpeg合并多个视频

/// ///遍历文件夹获取所有视频路径/// /// private void TraverseFolder(string path,stringfilepath){DirectoryInfo dInfo newDirectoryInfo(path);Dictionary dic new Dictionary();Dictionary dic2 new Dictionary();List list new List();//遍历该文件夹foreach (File…

android应用开发全程实录-实现甩动拨打和挂断电话

今天继续给大家带来《Android应用开发全程实录》中的章节&#xff0c;这部分是讲传感器中的一个实例。 通过上面的例子我们学会了如何获得某种类型的传感器&#xff0c;下面通过一个实例来学习如何使用某一个类型的传感器。我们以加速传感器为例&#xff0c;来实现这样一个功能…

static的应用以及静态与非静态的区别

先前看到一个技术大牛写了一个关于静态成员与非静态成员&#xff0c;静态方法和非静态方法的各自区别&#xff0c;觉得挺好的&#xff0c;在这里写一个小程序来说明这些区别。 package com.liaojianya.chapter5; /*** This program will demonstrate the use of static method.…

Python中抓网页的小陷阱

这边博客已经搬家到这里了。我的个人博客&#xff0c;风格我自己更喜欢&#xff0c;也可以完全控制。当然&#xff0c;会花一点钱&#xff0c;但是基本能承受。 欢迎各位来观光&#xff0c;博客园很棒&#xff0c;但是有一个自己能控制的网站也许会更好。另外&#xff0c;不能发…

C# 打印文件

http://support.microsoft.com/kb/322091转载于:https://www.cnblogs.com/xbgz/p/3431463.html

c语言穷举算法 枚举法,c语言枚举法 穷举法 ppt课件

枚举法 穷举法 笨人之法 把所有可能的情况一一测试 筛选出符合条件的各种结果进行输出 分析 这是个不定方程 三元一次方程组问题 三个变量 两个方程 x y z 1005x 3y z 3 100设公鸡为x只 母鸡为y只 小鸡为z只 百元买百鸡问题分析 x y z 1005x 3y z 3 100 三重循环 voidmain intx…

装饰模式(Decorator pattern)

装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能&#xff0c;是继承关系的一个替代方案。 装饰模式的结构 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之&#xff0c;客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰…

恶补sql知识(一)

索引的定义 SQL Server的索引值是对数据库中一个或者多个列的值进行排序的结构。 索引几个特性&#xff1a; 1&#xff09;索引可以提高数据的访问速度 只有在适当的位置建立索引&#xff0c;就能大幅度提高,实际上&#xff0c;您可以把索引理解为一种特殊目录。微软的SQL SERV…

php连接数据库输出的中文几个字就…

我们首先假设数据库中采用的编码为UTF-8 这时我们在PHP页面中应当首先添加 "Content-Type" content"text/html; charsetutf-8" />文件保存时的编码类型也必须是utf-8。 之后在数据库查询前添加 mysql_query("set names utf8");注&#xff1a;…

android开启服务器配置,Android基于XMPP开发(一)【openfire服务器配置】

OpenFireOpenFire 是采用Java开发的基于XMPP(Jabber)协议&#xff0c;开源实时协作(RTC)服务器。Smack 是用 Java编 写的XMPP客户端代码库&#xff0c;是 spark 的核心开源界总是有许多有趣的东东&#xff0c;这三个合起来就是一个完整的XMPP IM 实现。OpenFire ——服务器端Sp…

Python 生成器 迭代器

1.1 生成器通过列表生成式&#xff0c;我们可以直接创建一个列表。但是&#xff0c;受到内存限制&#xff0c;列表容量肯定是有限的。而且&#xff0c;创建一个包含100万个元素的列表&#xff0c;不仅占用很大的存储空间&#xff0c;如果我们仅仅需要访问前面几个元素&#x…

寻路基本工具类定义 AIDefine.cpp

1 #include "AIDefine.h" 2 3 PointI AI_FindHelpPoint[8] {PointI(-1,0),PointI(0,-1),PointI(1,0),PointI(0,1),PointI(-1,-1),PointI(1,-1),PointI(1,1),PointI(-1,1)}; 转载于:https://www.cnblogs.com/liusijian/p/3438542.html

android相对布局代码,Android基础_3 Activity相对布局(示例代码)

相对布局要比前面讲的线性布局和表格布局要灵活一些&#xff0c;所以平常用得也是比较多的。相对布局控件的位置是与其周围控件的位置相关的&#xff0c;从名字可以看出来&#xff0c;这些位置都是相对的&#xff0c;确定出了其中一个控件的位置就可以确定另一个控件的位置了。…

WSDL文件生成WEB service server端C#程序

一般一个已经实现功能的WEB Server会发布自己的WSDL文件&#xff0c;供客户端生成代理类。 但有时是先有的server与client交互的接口定义&#xff08;WSDL&#xff09;文件&#xff0c;然后由server和client端分别写程序&#xff0c;一个提供web服务&#xff0c;一个使用web服…

php二维数组排序 按照指定的key 对数组进行排序

2019独角兽企业重金招聘Python工程师标准>>> /*** desc arraySort php二维数组排序 按照指定的key 对数组进行排序* param array $arr 将要排序的数组* param string $keys 指定排序的key* param string $type 排序类型 asc | desc* return array*/ function arrayS…

剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列

剑指Offer - 九度1367 - 二叉搜索树的后序遍历序列2013-11-23 03:16 题目描述&#xff1a;输入一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 输入&#xff1a;每个测试案例包…

13个代码注释的小技巧

13个代码注释的小技巧 这篇文章是由Jos M. Aguilar在他卓越的博客中以西班牙语的形式首发&#xff0c;其后Timm Martin在获得Aguilar先生的授权下&#xff0c;对该文章进行翻译、修改&#xff0c;并且在DevTopics上发布。 以下13个小技巧可以使得你的代码在长时间内依然能够保…