/// <summary> /// 成るか不成りかダイアログによる選択を行います。 /// </summary> private bool CheckToPromote(PieceType pieceType, BWType bwType) { var dialog = new PromoteDialog(); var screenPos = Cursor.Position; dialog.StartPosition = FormStartPosition.Manual; dialog.Left = screenPos.X - (dialog.Width / 2); dialog.Top = screenPos.Y - dialog.Height - (int)SquareSize.Height / 2; dialog.AdjustInDisplay(); try { ClosePromoteDialog(); // 成り・不成り選択中に外から局面が設定されることがあります。 // その場合に備えてダイアログ自体を持っておきます。 this.promoteDialog = dialog; var result = dialog.ShowDialog(); ClosePromoteDialog(); return(result == DialogResult.OK); } finally { ClosePromoteDialog(); } }
/// <summary> /// 成り・不成り選択中に外から局面が設定されることがあります。 /// その場合には選択ダイアログを強制的にクローズします。 /// </summary> private void ClosePromoteDialog() { if (this.promoteDialog != null) { this.promoteDialog.Close(); this.promoteDialog = null; } }
/// <summary> /// 成るか不成りかダイアログによる選択を行います。 /// </summary> private bool CheckToPromote(PieceType pieceType, BWType bwType) { var dialog = new PromoteDialog(); var screenPos = Cursor.Position; dialog.StartPosition = FormStartPosition.Manual; dialog.Left = screenPos.X - (dialog.Width / 2); dialog.Top = screenPos.Y - dialog.Height - (int)SquareSize.Height / 2; dialog.AdjustInDisplay(); try { ClosePromoteDialog(); // 成り・不成り選択中に外から局面が設定されることがあります。 // その場合に備えてダイアログ自体を持っておきます。 this.promoteDialog = dialog; var result = dialog.ShowDialog(); ClosePromoteDialog(); return (result == DialogResult.OK); } finally { ClosePromoteDialog(); } }