资料,教程,编程,文集
x:Name="RecA" Fill="Orange" Stroke="White" StrokeThickness="2" Canvas.Top="40" Canvas.Left="60" Width="160" Height="100"/>
<Rectangle x:Name="RecB" Fill="LightBlue" Stroke="White" StrokeThickness="2" Canvas.Top="40" Canvas.Left="240" Width="160" Height="100"/> <TextBlock x:Name="Status" Foreground="White" Text="Status" Canvas.Left="100" Canvas.Top="200"/> </Canvas>
添加 MouseLeftButtonDown 事件处理程序,显示当前鼠标按下时的坐标,并显示源控件名称:
private void ParentCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { String msg = "x:y = " + e.GetPosition(sender as FrameworkElement).ToString(); msg += " from " + (e.Source as FrameworkElement).Name; Status.Text = msg; }
运行后在 RecA 上按下鼠标:
在 Canvas 上按下鼠标:
结束语
本文简单介绍了 Silverlight 2 中关于鼠标事件处理的一些知识,包括事件注册,获取事件数据,路由事 件等.在下一篇中,我们将使用这些鼠标事件来实现一个简单的拖放功能.
一步一步学 Silverlight 2 系列(5):实现简单的拖放功能
概述
Silverlight 2 Beta 1 版本发布了,无论从 Runtime 还是 Tools 都给我们带来了很多的惊喜,如支持框 架语言 Visual Basic, Visual C#, IronRuby, Ironpython,对 JSON,Web Service,WCF 以及 S ockets 的支持等一系列新的特性.《一步一步学 Silverlight 2 系列》文章带您快速进入 Silverlight 2 开发.
本文为系列文章第五篇,利用前面讲过的鼠标事件处理实现简单的拖放功能.
准备 XAML
在实现拖放功能中,分为三个步骤: 1.按下鼠标,触发 MouseLeftButtonDown 事件,选择要拖动的对象. 2.移动鼠标,触发 MouseMove 事件,移动选择的对象. 3.放开鼠标,触发 MouseLeftButtonUp 事件,停止捕捉事件. 做一个简单的界面,用一个按钮来显示拖放,如下 XAML 声明:
<Canvas Background="#46461F">
<TextBlock Text="拖动我" VerticalAlignment="Center" Margin="10"></T extBlock> </Canvas>
这里为了界面显示效果,使用了控件模板,后续会专门讲到.
开始拖放操作
开始拖放操作,实现 MouseLeftButtonDown 事件处理程序,用两个全局变量来记录当前鼠标的位置和 鼠标是否保持移动.
bool trackingMouseMove = false; Point mousePosition;
void OnMouseDown(object sender, MouseButtonEventArgs e) { FrameworkElement element = sender as FrameworkElement; mousePosition = e.GetPosition(null); trackingMouseMove = true; if (null != element) { element.CaptureMouse(); element.Cursor = Cursors.Hand; } }
移动对象
移动对象,实现 MouseMove 事件处理程序,计算元素的位置并更新,同时更新鼠标的位置.
void OnMouseMove(object sender, MouseEventArgs e) { FrameworkElement element
= sender as FrameworkElement; if (trackingMouseMove) { double deltaV = e.GetPosition(null).Y - mousePosition.Y; double deltaH = e.GetPosition(nu
搜索“diyifanwen.net”或“第一范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,第一范文网,提供最新高等教育Silverlight入门教程(7)全文阅读和word下载服务。
相关推荐: