当我拖动一个图片框时,它同时拖动了我的两个。因为在 pbxMap_DragDrop 方法中,我必须调用两个在拖动时应该触发的方法。
private void pbxMap_DragDrop(object sender, DragEventArgs e)
{
myDetectMouse.setMinotaur(e, myMap.myCells);
myDetectMouse.setTheseus(e, myMap.myCells);
}
塞特修斯:
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 设置多个事件处理程序,具体取决于拖动的图片框。