zoukankan      html  css  js  c++  java
  • Silverlight中实现拖拽功能

    下面的示例演示如何在基于 Silverlight 的应用程序中拖放对象。出于安全考虑,不能在应用程序之间拖放对象。因此,说成在 Silverlight 插件区域内"滑动"对象更为准确。但是,术语"拖放"更为人知,因此在此处使用。

    Xaml脚本:

    <UserControl x:Class="DragAndDropSimple.Page"
        xmlns
    ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x
    ="http://schemas.microsoft.com/winfx/2006/xaml" 
        Width
    ="400" Height="300">
      
    <Canvas x:Name="rootCanvas"
      Width
    ="640"
      Height
    ="480"
      Background
    ="Gray"
      
    >
        
    <!-- You can drag this rectangle around the canvas. -->
        
    <Rectangle
        
    MouseLeftButtonDown="Handle_MouseDown"
        MouseMove
    ="Handle_MouseMove"
        MouseLeftButtonUp
    ="Handle_MouseUp"
        Canvas.Left
    ="30" Canvas.Top="30" Fill="Red"
        Width
    ="50" Height="50" />
      
    </Canvas>

    </UserControl>

    后置代码:

    // Global variables used to keep track of the 
    // mouse position and whether the object is captured
    // by the mouse.
    bool isMouseCaptured;
    double mouseVerticalPosition;
    double mouseHorizontalPosition;

    public void Handle_MouseDown (object sender, MouseEventArgs args) 
    {
        Rectangle item 
    = sender as Rectangle;
        mouseVerticalPosition 
    = args.GetPosition(null).Y;
        mouseHorizontalPosition 
    = args.GetPosition(null).X;
        isMouseCaptured 
    = true;
        item.CaptureMouse();
    }

    public void Handle_MouseMove(object sender, MouseEventArgs args) 
    {
        Rectangle item 
    = sender as Rectangle;
        
    if (isMouseCaptured) 
        {

            
    // Calculate the current position of the object.
            double deltaV = args.GetPosition(null).Y - mouseVerticalPosition;
            
    double deltaH = args.GetPosition(null).X - mouseHorizontalPosition;
            
    double newTop = deltaV + (double)item.GetValue(Canvas.TopProperty);
            
    double newLeft = deltaH + (double)item.GetValue(Canvas.LeftProperty);

            
    // Set new position of object.
            item.SetValue(Canvas.TopProperty, newTop);
            item.SetValue(Canvas.LeftProperty, newLeft);

            
    // Update position global variables.
            mouseVerticalPosition = args.GetPosition(null).Y;
            mouseHorizontalPosition 
    = args.GetPosition(null).X;
        }
    }

    public void Handle_MouseUp(object sender, MouseEventArgs args) 
    {
        Rectangle item 
    = sender as Rectangle;
        isMouseCaptured 
    = false;
        item.ReleaseMouseCapture();
        mouseVerticalPosition 
    = -1;
        mouseHorizontalPosition 
    = -1;
    }
  • 相关阅读:
    python登录qq
    js加解密的算法
    python request模板
    qq查询接口
    python代理池的实现
    mvvm实现
    消息队列
    【Linux常见命令】seq命令
    【Linux常见命令】find命令
    【Linux常见命令】rm命令
  • 原文地址:https://www.cnblogs.com/Dlonghow/p/1353693.html
Copyright © 2011-2022 走看看