/*
* Copyright INDEX Co.
*/
using System;
using System.Drawing;
using System.Windows.Forms;
using ChatworkBulkSender.UserControls;
using ChatworkBulkSender.Utils;
namespace ChatworkBulkSender.Forms
{
public partial class MainForm : Form
{
// メインメニューのユーザーコントロール
private MainMenuControl _mainMenuControl = null;
// 設定メニューのユーザーコントロール
private ConfigMenuControl _configMenuControl = null;
public MainForm()
{
InitializeComponent();
this.ActiveControl = null;
// 画面サイズの指定
this.ClientSize = new Size(800, 620);
// ウィンドウサイズを固定
this.FormBorderStyle = FormBorderStyle.FixedSingle;
// 最大化ボタンを無効にする
this.MaximizeBox = false;
// キャッシュを保持する
this._mainMenuControl = new MainMenuControl();
this._configMenuControl = new ConfigMenuControl();
panelMainForm.Controls.Add(_mainMenuControl);
panelMainForm.Dock = DockStyle.Fill;
}
private void ViewMain_Load(object sender, EventArgs e)
{
// メインメニューのクリックイベントの登録
this._mainMenuControl.ConfigBtn_Clicked += OnConfigBtn_Clicked;
this._mainMenuControl.CloseBtn_Clicked += BtnClose_Clicked;
// 設定メニューのクリックイベントの登録
this._configMenuControl.MainBtn_Clicked += OnMainBtn_Clicked;
this._configMenuControl.CloseBtn_Clicked += BtnClose_Clicked;
}
/// <summary>
/// 設定ボタンのクリック時、設定メニューへ遷移する。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnConfigBtn_Clicked(object sender, EventArgs e)
{
// キャッシュの参照がない場合、再取得する
if (this._configMenuControl == null)
{
this._configMenuControl = new ConfigMenuControl();
}
panelMainForm.Controls.Clear();
panelMainForm.Controls.Add(_configMenuControl);
panelMainForm.Dock = DockStyle.Fill;
}
/// <summary>
/// メインメニューボタンのクリック時、メインメニューへ遷移する。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnMainBtn_Clicked(object sender, EventArgs e)
{
// キャッシュの参照がない場合、再取得する
if (this._mainMenuControl == null)
{
this._mainMenuControl = new MainMenuControl();
}
panelMainForm.Controls.Clear();
panelMainForm.Controls.Add(_mainMenuControl);
panelMainForm.Dock = DockStyle.Fill;
}
/// <summary>
/// フォームを閉じ、アプリケーションを終了する
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BtnClose_Clicked(object sender, EventArgs e)
{
this.Close();
}
/// <summary>
/// フォームに表示するユーザーコントロールをパネルから削除した後、明示的なDisposeで解放する。
/// </summary>
private void DisposeViewControls()
{
panelMainForm.Controls.Clear();
_mainMenuControl.Dispose();
_configMenuControl.Dispose();
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult result = MessageBox.Show("アプリケーションを終了してもよろしいですか?", "確認", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.No)
{
e.Cancel = true;
return;
}
// イベント登録の解除
this._mainMenuControl.ConfigBtn_Clicked -= OnConfigBtn_Clicked;
this._mainMenuControl.CloseBtn_Clicked -= BtnClose_Clicked;
this._configMenuControl.MainBtn_Clicked -= OnMainBtn_Clicked;
this._configMenuControl.CloseBtn_Clicked -= BtnClose_Clicked;
// 明示的に開放する
this.DisposeViewControls();
}
}
}