none
在WPF中如何实现鼠标框选Canvas中的多个对象进行拖拽? RRS feed

  • 问题

  • 现在有Canvas A 和 Canvas B,

    A中有多个Image控件,

    现在希望通过 鼠标+ctrl 或 框选 的方式实现多选,然后拖拽到B中。

    单个控件的拖拽我知道怎么写,所以我遇到的难点是如何实现鼠标的框选和批量拖拽呢?

    希望在这里能得到一些指导~

    2016年4月1日 12:46

答案

  • 您好 starMelon,

    >>"所以我遇到的难点是如何实现鼠标的框选和批量拖拽呢?"

    要实现批量拖拽,必须首先让图片拥有选中和非选中两种状态。当执行拖拽操作的时候,所有被选中的图片都要被从一个Canvas移动到另一个Canvas中,未被选中的图片不做任何操作。所以处理选中和非选中是批量操作的重点。我们可以为每一个图片都定义一个对应的字段ImageXChecked, 用来存储图片是否被选中。我们还可以把每一个图片都放入Border控件中。当图片被选中,设置Border的大小。以区分选中和不选中状态。以下代码供你参考。

    <Border Name="Image1Border"  BorderBrush="Gray" BorderThickness="0">
        <Image Source="Resources\1.jpg" MouseLeftButtonDown="Image_MouseLeftButtonDown"/>
    </Border>
    private bool Image1Checked = false;
    
    private void Image_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        Image1Checked = !Image1Checked;
        if (Image1Checked)
        {
            Image1Border.BorderThickness = new Thickness(2);
        }
        else
        {
            Image1Border.BorderThickness = new Thickness(0);
        }
    }
    Best Regards,
    Li Wang

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2016年4月5日 5:55