让Silverlight User Control接收键盘消息
2007-11
昨天说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
}
您可能对这些文章也感兴趣:- Silverlight中C#获取与修改HTML DOM元素信息
- Silverlight 1.1 Tools for Visual Studio 2008
- [翻译]The Web Is Dead
- 中秋快乐哦~Silverlight的中秋祝福
- Silverlight直接从1.1 Alpha跳到2.0 Beta?
- Silverlight对视频流HTTP请求头的要求
- 在Silverlight中实现定时器功能
- 让Silverlight项目和Web项目完美融合
- Silverlight读XML是件痛苦的事情
- Silverlight 2 Beta 2: Available very soon
与该文相关的评论:(我也想说几句)Processed in 0.3906375 second(s) , unknow queries
Powered by OWord V0.1, Even Not Alpha
(此博客程序为半成品,请勿索取,以免给您的心灵造成创伤^_^)
鄂ICP备05026031号
我来说两句:
用户中心
日志分类

最新日志
统计信息





