第一范文网 - 专业文章范例文档资料分享平台

Silverlight入门教程(7)

来源:用户分享 时间:2021-04-05 本文由逝伤 分享 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

资料,教程,编程,文集

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下载服务。

Silverlight入门教程(7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/wenku/1178503.html(转载请注明文章来源)
热门推荐
Copyright © 2018-2022 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top