Silverlight事件主要分为输入事件和非你输入事件两个种类。

输入事件主要指鼠标、键盘等你输入设备的事件;非输入事件指对象生存期的改变以及状态的改变等。我们这篇文章主要讲输入事件,至于事件的功能这里不再描述,主要是通过一个综合的例子来体验事件.

做一个可以用鼠标在指定区域内随意拖放的圆,在拖放过程中用到MouseMove、MouseLeftButtonDown、MouseLeftButtonUp这三个事件在移动鼠标的过程中,实时的来获取鼠标的坐标,然后更新圆的Canvas.Top和Canvas.Left

XAML:

<Canvas x:Name="LayoutRoot" Background="AliceBlue"><Ellipse Canvas.Top="50" Canvas.Left="50" Width="100" Height="100" Fill="Gold" Stroke="Black" StrokeThickness="3" MouseLeftButtonDown="Ellipse_MouseLeftButtonDown" MouseMove="Ellipse_MouseMove" MouseLeftButtonUp="Ellipse_MouseLeftButtonUp"/><TextBlock x:Name="txb_postion" FontSize="26" /></Canvas>

C#:

Point CurrPostion;//定义当前坐标bool MouseMoveing = false;//定义是否移动中的布尔变量public MouseEvent(){InitializeComponent();}private void Ellipse_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){FrameworkElement element = sender as FrameworkElement;//获取当前坐标CurrPostion = e.GetPosition(null);//设置开始拖动变量MouseMoveing = true;if (element != null){//捕捉鼠标位置element.CaptureMouse();//设置鼠标的指针为手形element.Cursor = Cursors.Hand;}}private void Ellipse_MouseMove(object sender, MouseEventArgs e){//获取当前的Silverlight对象FrameworkElement element = sender as FrameworkElement;if (MouseMoveing){//获取当前坐标double CurrX = e.GetPosition(null).X - CurrPostion.X;double CurrY = e.GetPosition(null).Y - CurrPostion.Y;//设置对象的坐标element.SetValue(Canvas.LeftProperty, CurrX + (double)element.GetValue(Canvas.LeftProperty));element.SetValue(Canvas.TopProperty, CurrY + (double)element.GetValue(Canvas.TopProperty));//输出当前坐标txb_postion.Text = "Ellipse的当前坐标,X:" + CurrPostion.X.ToString() + ",Y:" + CurrPostion.Y.ToString();//保存当前坐标CurrPostion = e.GetPosition(null);}}private void Ellipse_MouseLeftButtonUp(object sender, MouseButtonEventArgs e){FrameworkElement element = sender as FrameworkElement;//放开鼠标后释放拖动变量的值MouseMoveing = false;//停止捕捉鼠标位置element.ReleaseMouseCapture();//设置当前坐标CurrPostion.X = 0;CurrPostion.Y = 0;//恢复原来鼠标的指针element.Cursor = null;}

然后运行结果,可以随意拖动圆,不过不太完整当鼠标把圆拖到浏览器边缘以外看不到时,就拖不回来了。有兴趣的朋友可以再完善一下:

例子很简单,主要是为了体验Silverlight的输入事件。

Silverlight开发历程—(输入事件和非输入事件)相关推荐

  1. 小程序的冒泡事件和非冒泡事件

    事件分为冒泡事件和非冒泡事件: 冒泡事件:当一个组件上的事件被触发后,该事件会向父节点传递. 非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递. WXML的冒泡事件列表: 类型 触发条件 ...

  2. 【微信小程序】冒泡事件与非冒泡事件、将文章数据从业务中分离、wxml的模块化

  3. vue中解决模糊搜索输入中文时--未输入完成时触发input事件

    在给输入框绑定input或keydown事件时 预期效果是有输入法时,输入中文后触发事件,不希望输一个字母就触发一次事件 可以用到compositionstart,compositionend. 主流 ...

  4. java keydown_利用Keydown事件阻止用户输入实现代码

    利用Keydown事件阻止用户输入实现代码 更新时间:2014年03月11日 16:38:29   作者: 这篇文章主要介绍了利用Keydown事件阻止用户输入的具体实现,需要的朋友可以参考下 先了解 ...

  5. ABAP:参数输入屏幕SELECTION-SCREEN中的事件

    在SAP开发中,有用户提出,在输入参数的屏幕中,根据用户的选择对某些输入框进行屏蔽,防止用户在不需要的地方输入参数.这需要用到SELECTION-SCREEN的事件. 下面的选择屏幕中,要求根据用户选 ...

  6. 使用AT SELECTION-SCREEN事件验证用户输入条件的反思

    回想一下,为什么要在AT SELECTION-SCREEN事件验证用户输入条件?好像是第一次做ABAP培训中老师提到的,当时也没有觉得有什么问题,以后在程序中也就按照这样的思路去写代码了.像下面简单的 ...

  7. input文本框实现输入英文时自动触发事件,输入中文时要输入完成后才触发事件

    需求: 英文(英文输入法): 每输入一个字母都触发一次事件; 中文(拼音输入法): 输入完成后才触发事件,不是每打一个拼音就触发 实现: $(function(){var flag = true;$( ...

  8. WPF经典教程--键盘输入事件, 鼠标输入事件, 焦点处理

    一.键盘和键盘事件 WPF提供了一个基本的键盘类(System.Input.Keyboard类),该类提供键盘相关的事件,方法和属性,以提供有关键盘状态的信息.键盘事件也由诸如UIElement XA ...

  9. JavaScript表单事件 获取焦点:focus 失去焦点:blur 输入事件:input 变化事件:change

    JavaScript表单事件 焦点处理 焦点处理主要包括focus(获取焦点)和blur(失去焦点)事件类型.所谓焦点,就是激活表单字段,使其可以响应键盘事件. 获取焦点:focus 当单击或使用Ta ...

最新文章

  1. All about OpenGL ES 2.x – (part 2/3)(转载)
  2. ansible相关说明
  3. org.apache.hadoop.util.PlatformName //cgywin下Hadoop-0.21.0 错误问题
  4. SSH整合中,使用父action重构子类action类.(在父类中获取子类中的泛型对象)
  5. LeetCode 437. 路径总和 III(双重递归)
  6. oracle logfile sync,oracle等待事件3构造一个DirectPathwrite等待事件和构造一个LogFileSync等待事件...
  7. python入门教授_南开大学教授强力推荐的5本Python入门书籍,附电子版
  8. HDU1871 无题【序列处理】
  9. 01.第一个html文件.html
  10. 关于IE插件开发(一)——COM组件开发加法
  11. 数字转人民币大写,PHP实现
  12. 从Outlook到python都可以使您的工作减少一半
  13. .net基础知识学习
  14. 研究了一堆英语学习软件,发现了一个美国宝藏口语App,国内也能用!
  15. 【问答】用SVG矢量图形自定义不规则控件——中国地图
  16. a链接实现alt提示
  17. 电子签名合同的有效期是多久
  18. stp实验心得_实验报告STP
  19. vue实现中根据字母或者中文进行排序
  20. 【STM32F429的DSP教程】第3章 Matlab简易使用之基础操作

热门文章

  1. 列表ListView和列表选择框的使用编写步骤
  2. springboot项目中使用日志
  3. redis内存行数据库细节
  4. 存储过程语法 - 变量
  5. vim比vi做的一些改进
  6. Curator实现分布式锁的基本原理-InterProcessMutex.internalLock
  7. mybatis-翻页
  8. Redis高可用方案-哨兵模式-SpringBoot整合
  9. 区域数据导入功能(pinyin4J使用)
  10. 解决cookie写入问题