首页 > 其他 > 详细

控件拖拽

时间:2014-03-03 15:47:05      阅读:438      评论:0      收藏:0      [点我收藏+]

1. 定义要用到的临时变量

        private bool dragging;
        Point mousePoint;
        TextBlock mouseCtrl = null;
        Rectangle shadow = new Rectangle();
        public MainWindow()
        {
            InitializeComponent();
            c.Children.Insert(0, shadow);
        }

 

2. 定义鼠标按下方法(索要拖拽控件的事件)

        private void button1_MouseDown(object sender, MouseButtonEventArgs e)
        {

            if (e.LeftButton == MouseButtonState.Pressed)
            {
                dragging = true;
                mousePoint = e.GetPosition(this.c);
                mouseCtrl = (TextBlock)e.Source; 
                mouseCtrl.Visibility = Visibility.Collapsed;
                shadow.Width = mouseCtrl.Width;
                shadow.Height = mouseCtrl.Height;
                shadow.Fill = Brushes.Red;
                Canvas.SetLeft(shadow, Canvas.GetLeft(mouseCtrl));
                Canvas.SetTop(shadow, Canvas.GetTop(mouseCtrl));
                shadow.Visibility = Visibility.Visible;
                c.CaptureMouse();
            }   
        }

 

3. 定义鼠标移动方法(背景上定义)

        private void button1_MouseMove(object sender, MouseEventArgs e)
        {
if (dragging) { if (e.LeftButton == MouseButtonState.Pressed) { Point theMousePoint = e.GetPosition(this.c); Console.WriteLine("Move: left:" + Canvas.GetLeft(mouseCtrl) + " top:" + Canvas.GetTop(mouseCtrl)); Canvas.SetLeft(shadow, theMousePoint.X - (mousePoint.X - Canvas.GetLeft(shadow))); Canvas.SetTop(shadow, theMousePoint.Y - (mousePoint.Y - Canvas.GetTop(shadow)));//简单的计算,只移动shadow mousePoint = theMousePoint; } } }

 

4. 定义鼠标松开方法

        private void button1_MouseUp(object sender, MouseButtonEventArgs e)
        {

            dragging = false;
            Mouse.Capture(null);
            shadow.Visibility = Visibility.Hidden;
            mouseCtrl.Visibility = Visibility.Visible;
            Canvas.SetLeft(mouseCtrl, Canvas.GetLeft(shadow));
            Canvas.SetTop(mouseCtrl, Canvas.GetTop(shadow));
        }

  

控件拖拽,布布扣,bubuko.com

控件拖拽

原文:http://www.cnblogs.com/Alf7/p/3576945.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!