WPF拖拽实现

对于WPF拖拽问题网上有很多,一般就是一个控件的移动,今天想做一个效果,效果是这样的:

页面分左右两部分,左边是canvas是空的,右边的canvas中有一个矩形,我要把矩形拖到到左侧,拖完后右侧的矩形不消失,也就是说在左边复制了一个矩形,以下是代码

 public StackPanel()
        {
            InitializeComponent();
            this.rectImage.PreviewMouseMove += new MouseEventHandler(rect_PreviewMouseMove);
            this.Canvas1 .DragOver +=new DragEventHandler(Canvas1_DragOver);
            this.Canvas1.Drop += new DragEventHandler(Canvas1_Drop);
        }
        void rect_PreviewMouseMove(object sender, MouseEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                DataObject data = new DataObject(typeof(Rectangle), this.rectImage);
                DragDrop.DoDragDrop(this.rectImage, data, DragDropEffects.Move);
            }
        }
        void Canvas1_DragOver(object sender, DragEventArgs e)
        {
            if (!e.Data.GetDataPresent(typeof(Rectangle)))
            {
                e.Effects = DragDropEffects.None;
                e.Handled = true;
            }
        }
        void Canvas1_Drop(object sender, DragEventArgs e)
        {
            IDataObject data =new DataObject ();
            data= e.Data;
            if (data.GetDataPresent(typeof(Rectangle)))
            {
                Rectangle rect = new Rectangle();
                rect = data.GetData(typeof(Rectangle)) as Rectangle;
                this.Canvas2.Children.Remove(rect);
                this.Canvas1.Children.Add(rect);
            }
        }

上面的代码实现的是移动后右侧的矩形就消失了,但是我想不消失,但是把

this.Canvas2.Children.Remove(rect);
这句代码注释了后就会报错,这里该怎么做呢,为什么会出现这个错呢?我刚接触WPF,不明白,高手帮忙

慕勒3428872
浏览 561回答 3
3回答

MYYA

先记住右边矩形的位置,然后在Remove之后,在右边原来矩形的位置再复制一个矩形。

HUX布斯

您好,我想问一下,WPF默认的DragDrop类不能实现这样的吗?还有所谓的DragDropEffect里的枚举又有什么用呢?应该是有关联的吧
打开App,查看更多内容
随时随地看视频慕课网APP