private void MineMouseUp(object sender, EventArgs e) { MineControl btn = (MineControl)sender; switch (btn.MouseStatus) { case 1: //left btn.Unseal(); if (btn.Value == 0) { FloodFill(btn.LocationX, btn.LocationY); } break; case 2: //right //do nothing break; case 3: //both bool doUnseal = false; //检查是否符合翻开的条件 if (CheckCondition(btn.LocationX, btn.LocationY)) { doUnseal = true; } for (int i = -1; i <= 1; i++) { if (i + btn.LocationX < 0 || i + btn.LocationX >= X) { continue; } for (int j = -1; j <= 1; j++) { if (j + btn.LocationY < 0 || j + btn.LocationY >= Y) { continue; } MineControl curbtn = matrix[(i + btn.LocationX) * Y + j + btn.LocationY]; if (doUnseal) { curbtn.Unseal(); if (curbtn.Value == 0) { FloodFill(curbtn.LocationX, curbtn.LocationY); } } else { curbtn.UnPress(); } } } break; } }