Fdream's Blog
专注于WEB前端开发
Powered by Google

让Silverlight User Control接收键盘消息

30 未知 2007-11
Fdream 发表于 Silverlight, 已被阅读 13121 次, 评论 0 条
关键词:silverlight
[ 阅读字体大小: ]

昨天说Silverlight User Control不能接收键盘消息,但是Page.xaml是可以接收键盘消息。既然Page能够接收键盘消息,那么我们就可以用Page来接收消息,然后想办法转发给User Control页面就行了。一个简单的实现方法就是利用C#中的delegate来实现。

简单的例子如下:

1、先在Page.xaml.cs中声明一个delegate类型以及一个该类型的变量,其参数和KeyboardEventHandler的参数一样,这样就可以直接把事件传过去了;

引用内容:

public delegate void SubKeyBoardEventHandler(object sender, KeyboardEventArgs e);

public SubKeyBoardEventHandler subKeyHandler = null;

2、在Page.xaml.cs中监听键盘消息:

引用内容:

this.KeyDown += new KeyboardEventHandler(Page_KeyDown);

3、这个键盘事件Handler要写成这样:

引用内容:

void Page_KeyDown(object sender, KeyboardEventArgs e)

{

if (subKeyHandler != null)

{

subKeyHandler(sender, e);

}

}

4、在User Control页面中,需要在构造函数里把Page实例传过去,这样就能给subKeyHandler赋值了:

引用内容:

public UC(Page pc)

{

System.IO.Stream s = this.GetType().Assembly.GetManifestResourceStream("TestKeyEvent.UC.xaml");

this.InitializeFromXaml(new System.IO.StreamReader(s).ReadToEnd());

pc.subKeyHandler = testKeyHandler;

}

5、testKeyHandler如下:

引用内容:

void testKeyHandler(object sender, KeyboardEventArgs e)

{

//here is your code

}

Related articles 您可能对这些文章也感兴趣:
Related comments 与该文相关的评论:(我也想说几句)
Add a comment 我来说两句: 
禁止表情
禁止UBB
禁止图片
识别链接
识别关键字
表  情
arrow
用户名:   密码:  (匿名可不写) 同时注册?
验证码:   看不清?换个图片  看不清楚?换个图片

 
Copyright © 2005-2008,Fdream All Rights Reserved
Processed in 0.0625008 second(s) , unknow queries
Powered by OWord V0.1, Even Not Alpha
(此博客程序为半成品,请勿索取,以免给您的心灵造成创伤^_^)
鄂ICP备05026031号