让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更新
- 让Silverlight User Control接收键盘消息
- 让Silverlight的大小随浏览器大小变化
- 让Silverlight项目和Web项目完美融合
- Silverlight 1.0 Released
- 用JavaScript调用Silverlight(C#)中的方法
- 共享一些数据:Silverlight的安装率
- HttpWebRequest头部可用设置以及可读设置
- 在Silverlight中使用中文
- Silverlight 2 RC0 Released?
与该文相关的评论:(我也想说几句)Processed in 0.0625008 second(s) , unknow queries
Powered by OWord V0.1, Even Not Alpha
(此博客程序为半成品,请勿索取,以免给您的心灵造成创伤^_^)
鄂ICP备05026031号
我来说两句:
用户中心
日志分类

最新日志
统计信息





