解决的问题:对一个域多个控件实现可拖放的鼠标 *** 作,将此实现封装为一个常用类以便复用
public static class DragDrop{ private static bool IsDragging = false; private static Point curPoint; private const int MAX_ZINDEX = 99999; private const double CURRENT_OPACITY = 0.5; private static int lastZIndex; private static double lastopacity; private static voID sender_MouseleftbuttonDown(object sender,MousebuttonEventArgs e) { UIElement uIElement = sender as UIElement; if (uIElement != null) { uIElement.CaptureMouse(); lastZIndex = (int)uIElement.GetValue(Canvas.ZIndexProperty); uIElement.SetValue(Canvas.ZIndexProperty,MAX_ZINDEX); lastopacity = uIElement.Opacity; uIElement.Opacity = CURRENT_OPACITY; IsDragging = true; curPoint = new Point(e.Getposition(null).X,e.Getposition(null).Y); } } private static voID sender_MouseMove(object sender,MouseEventArgs e) { if (!IsDragging) { return; } UIElement uIElement = sender as UIElement; if (uIElement != null) { double currentleft = (double)uIElement.GetValue(Canvas.leftProperty); double currenttop = (double)uIElement.GetValue(Canvas.topProperty); double newleft = (double)currentleft + e.Getposition(null).X - curPoint.X; double newtop = (double)currenttop + e.Getposition(null).Y - curPoint.Y; uIElement.SetValue(Canvas.leftProperty,newleft); uIElement.SetValue(Canvas.topProperty,newtop); curPoint = new Point(e.Getposition(null).X,e.Getposition(null).Y); } } private static voID sender_MouseleftbuttonUp(object sender,MousebuttonEventArgs e) { UIElement uIElement = sender as UIElement; if (uIElement != null) { uIElement.ReleaseMouseCapture(); IsDragging = false; uIElement.SetValue(Canvas.ZIndexProperty,lastZIndex); uIElement.Opacity = lastopacity; } } public static voID Load(UIElement sender) { sender.MouseleftbuttonDown += new MousebuttonEventHandler(sender_MouseleftbuttonDown); sender.MouseleftbuttonUp += new MousebuttonEventHandler(sender_MouseleftbuttonUp); sender.MouseMove += new MouseEventHandler(sender_MouseMove); } public static voID UnLoad(UIElement sender) { sender.MouseleftbuttonDown -= new MousebuttonEventHandler(sender_MouseleftbuttonDown); sender.MouseleftbuttonUp -= new MousebuttonEventHandler(sender_MouseleftbuttonUp); sender.MouseMove -= new MouseEventHandler(sender_MouseMove); }}
原文参考:http://bbs.silverlightchina.net/forum.PHP?mod=vIEwthread&tID=2143&extra=page%3D2%26filter%3Ddigest%26digest%3D1
总结以上是内存溢出为你收集整理的[学习记号 - SL代码] Silverlight可拖放工具类全部内容,希望文章能够帮你解决[学习记号 - SL代码] Silverlight可拖放工具类所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)