zoukankan      html  css  js  c++  java
  • Silverlight drag and drop参考代码

    public partial class Page : UserControl

    {
    bool isDragDropInEffect = false;
    Point pos;
     
    public Page()
    {
        InitializeComponent();
        // Loop through all the UIElements in the Canvas  
        // and attach Mouse Event Handlers to the Element
        foreach (UIElement uiEle in CanvasParent.Children)
        {
            uiEle.MouseMove += new MouseEventHandler(Element_MouseMove);
            uiEle.MouseLeftButtonDown += new MouseButtonEventHandler(Element_MouseLeftButtonDown);
            uiEle.MouseLeftButtonUp += new MouseButtonEventHandler(Element_MouseLeftButtonUp);
        }
    }
     
    void Element_MouseMove(object sender, MouseEventArgs e)
    {
        if (isDragDropInEffect)
        {
            FrameworkElement currEle = sender as FrameworkElement;
            // Retrieving the item's current x and y position
            double xPos = e.GetPosition(null).X - pos.X;
            double yPos = e.GetPosition(null).Y - pos.Y;
     
            // Re-position Element
            currEle.SetValue(Canvas.TopProperty, yPos + (double)currEle.GetValue(Canvas.TopProperty));
            currEle.SetValue(Canvas.LeftProperty, xPos + (double)currEle.GetValue(Canvas.LeftProperty));
     
            // Reset the new position value
            pos = e.GetPosition(null);
        }
    }
     
     
    void Element_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        FrameworkElement fEle = sender as FrameworkElement;
        isDragDropInEffect = true;
        // x and y coords of mouse pointer position
        pos = e.GetPosition(null);  
        // Enable mouse capture on element
        fEle.CaptureMouse();
        // Set the cursor to 'Hand' when mouse pointer is over element
        fEle.Cursor = Cursors.Hand;
    }
     
     
    void Element_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        if (isDragDropInEffect)
        {
            FrameworkElement ele = sender as FrameworkElement;
            isDragDropInEffect = false;
            // Removes Mouse Capture from Element being dragged
            ele.ReleaseMouseCapture();
        }
    }
     

    }

    这段代码把CanvasContent里的元素都变成可拖拽的.

  • 相关阅读:
    pipelinewise 学习二 创建一个简单的pipeline
    pipelinewise 学习一 docker方式安装
    Supercharging your ETL with Airflow and Singer
    ubuntu中使用 alien安装rpm包
    PipelineWise illustrates the power of Singer
    pipelinewise 基于singer 指南的的数据pipeline 工具
    关于singer elt 的几篇很不错的文章
    npkill 一个方便的npm 包清理工具
    kuma docker-compose 环境试用
    kuma 学习四 策略
  • 原文地址:https://www.cnblogs.com/aspnetx/p/1338396.html
Copyright © 2011-2022 走看看