/*
* Copyright XXXX Co.
*/
using System;
using System.Drawing;
using System.Windows.Forms;
using ChatworkBulkSender.UserControls;
using ChatworkBulkSender.Utils;
namespace ChatworkBulkSender.Forms
{
public partial class M_SenderMaster : Form
{
private SenderInfoControl _senderInfo;
// 追加:戻るボタンからの終了フラグ
private bool _isReturnButtonClicked = false;
public M_SenderMaster()
{
InitializeComponent();
this.ActiveControl = null;
this.ClientSize = new Size(1200,400);
// ウィンドウサイズを固定にする
this.FormBorderStyle = FormBorderStyle.FixedSingle;
// 最大化ボタンを無効化
this.MaximizeBox = false;
// パネルに余白を設定(四方20ピクセル)
this.Padding = new Padding(20);
// 現在の画面の中央に表示する
this.StartPosition = FormStartPosition.CenterScreen;
_senderInfo = new SenderInfoControl();
_senderInfo.Dock = DockStyle.Fill;
panel.Controls.Add(_senderInfo);
this.ActiveControl = panel;
}
private void M_SenderMaster_Load(object sender, EventArgs e)
{
// 戻るボタンのクリックイベントの登録
_senderInfo.BtnReturnClicked += this.BtnReturn_Click;
// フォントの統一設定を適用
FontSettingHelper.ApplyFontsToForm(this);
// ユーザーコントロールにも適用
FontSettingHelper.ApplyFontsToControl(_senderInfo);
// TabIndexの設定(フォーカス順制御)
TabIndexHelper.SetSenderMasterTabOrder(this, _senderInfo);
}
/// <summary>
/// 戻るボタンのクリック時にフォームを閉じる
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnReturn_Click(object sender, EventArgs e)
{
// 戻るボタンからの終了であることを示すフラグを設定
_isReturnButtonClicked = true;
// フォームを閉じる
this.Close();
}
private void M_SenderMaster_FormClosing(object sender, FormClosingEventArgs e)
{
// 戻るボタンからの終了の場合は確認メッセージをスキップ
if (!_isReturnButtonClicked)
{
// 親ウィンドウ(this)を渡し、表示場所が同じ画面位置になるように調整
DialogResult result = MessageBox.Show("送信者情報マスタ画面を終了してもよろしいですか?", "確認", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.No)
{
e.Cancel = true;
return;
}
}
// イベント登録の解除
_senderInfo.BtnReturnClicked -= this.BtnReturn_Click;
// 明示的に解放する
_senderInfo.Dispose();
if (this.Owner != null)
{
// 設定メニューを表示する
this.Owner.Show();
// 再描写を行う
this.Owner.Refresh();
}
}
}
}