当我拖动一个图片框时,它会拖动我的两个图片框。因为在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提供多个事件处理程序,具体取决于拖动的图片框。
答案 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
对象设置它。