将一个图片框拖到图片框中,将它们全部拖动

时间:2013-09-18 08:27:03

标签: c#

当我拖动一个图片框时,它会拖动我的两个图片框。因为在pbxMap_DragDrop方法中,我必须调用我拖动时应该触发的两个方法。

 private void pbxMap_DragDrop(object sender, DragEventArgs e)
        {
            myDetectMouse.setMinotaur(e, myMap.myCells);
            myDetectMouse.setTheseus(e, myMap.myCells);
        }

SetTheseus:

public void setTheseus(DragEventArgs e, List<Cell> cells)
        {
            for (int i = 0; i < cells.Count; i++)
            {
                int[] mapData = myMapController.getMapData(i, cells);
                int column = mapData[0];
                int row = mapData[1];
                int right = mapData[2];
                int bottom = mapData[3];

                Point RelativeMouseLoc = myMapController.myMap.myForm.pbxMap.PointToClient(Cursor.Position);

                if (RelativeMouseLoc.X > column &&
                    RelativeMouseLoc.X < column + myMapController.myMap.myCellSize
                    && RelativeMouseLoc.Y > row && RelativeMouseLoc.Y <
                    row + myMapController.myMap.myCellSize)
                {
                    myMapController.myMap.myCells[i].hasTheseus = true;
                }
                else
                {
                    myMapController.myMap.myCells[i].hasTheseus = false;
                }
            }
        }

SetMinotaur大致相同,但将hasTheseus替换为hasMinotaur。一旦细胞“hasTheseus”或“hasMinotaur”,它就会被吸引到细胞中。

因此,当我拖动它们时它会同时绘制它们,因为它们都在pbxMap_DragDrop中设置。

我想我可以为pbxMap_DragDrop提供多个事件处理程序,具体取决于拖动的图片框。

1 个答案:

答案 0 :(得分:2)

您可以查看sender参数,以确定是否要移动牛头怪或忒修斯。它看起来像这样:

var pic = (PictureBox)sender;
if (pic.Name == "minotaur")
{
    myDetectMouse.setMinotaur(e, myMap.myCells);
}
else
{
    myDetectMouse.setTheseus(e, myMap.myCells);
}

如果您不想使用Name属性,可以使用Tag属性之类的其他内容 - 只需确保为每个PictureBox对象设置它。