/*
* Copyright INDEX Co.
*/
using System;
using System.Windows.Forms;
using ChatworkBulkSender.Utils;
using ChatworkBulkSender.UserControls;
using System.Drawing;
using System.Linq;
using System.Collections.Generic;
using ChatworkBulkSender.Dtos;
namespace ChatworkBulkSender.Forms
{
partial class M_CustomerMaster : Form
{
public event EventHandler BtnSearchClicked;
private SearchBoxControl _searchBoxControl = null;
private CustomerDgvControl _customerDgvControl = null;
private BtnAddMasterControl _btnControl = null;
private CustomerMasterDto _dto = new CustomerMasterDto();
public M_CustomerMaster()
{
InitializeComponent();
// 初期の画面サイズ
this.ClientSize = new Size(1600,900);
// ウィンドウサイズを固定にする
this.FormBorderStyle = FormBorderStyle.FixedSingle;
// 現在の画面の中央に表示する
this.StartPosition = FormStartPosition.CenterScreen;
_searchBoxControl = new SearchBoxControl();
_customerDgvControl = new CustomerDgvControl();
_customerDgvControl.Dock = DockStyle.Fill;
_btnControl = new BtnAddMasterControl();
// フォーム上のパネルへユーザーコントロールを格納する
panelSearch.Controls.Add(_searchBoxControl);
panelDgv.Controls.Add(_customerDgvControl);
panelBtn.Controls.Add(_btnControl);
this.ActiveControl = panelSearch;
}
private void M_CustomerMaster_Load(object sender, EventArgs e)
{
// 戻るボタンのクリックイベントの登録
_btnControl.BtnReturnClicked += this.BtnReturn_Click;
_btnControl.BtnCreateAddClicked += this.BtnCreateAdd_Click;
_searchBoxControl.SearchRequested += SearchBoxControl_SearchRequested;
}
/// <summary>
/// フォーム内のDataGridViewのセルの選択状態を解除します。
/// </summary>
private void ClearCustomerGridSelection()
{
// パネル内から顧客マスタDGVの参照を検索し、最初に見つけた参照を取得する
CustomerDgvControl customerDgv = panelDgv.Controls.OfType<CustomerDgvControl>().FirstOrDefault();
if (customerDgv != null)
{
// セルの選択状態を解除する
customerDgv.ClearSelection();
}
}
private void TableLayoutPanel_MouseDown(object sender, MouseEventArgs e)
{
this.ClearCustomerGridSelection();
}
private void PanelBtn_MouseDown(object sender, MouseEventArgs e)
{
this.ClearCustomerGridSelection();
}
private void SearchBoxControl_SearchRequested(object sender, Dictionary<string,object> criteria)
{
_customerDgvControl.Search(criteria);
}
private void BtnSearch_Click(object sender, EventArgs e)
{
var mgmtNumber = _searchBoxControl.Controls.Find("mgmtNumberTxtBox",true).FirstOrDefault() as TextBox;
var customerName = _searchBoxControl.Controls.Find("customerNameTxtBox", true).FirstOrDefault() as TextBox;
var chkUnusedData = _searchBoxControl.Controls.Find("chkUnusedData", true).FirstOrDefault() as CheckBox;
_customerDgvControl.Search(new Dictionary<string, object> {
{"ManagementNumber", mgmtNumber.Text},
{"CustomerName", customerName.Text},
{"IsUnused", chkUnusedData.Checked ? true : false }
,
});
}
private void BtnCreateAdd_Click(object sender, EventArgs e)
{
this.Hide();
// デフォルトは新規登録状態
M_CustomerMasterIndividualEdit individualEdit = new M_CustomerMasterIndividualEdit();
// 親フォームを取得する
individualEdit.Owner = this;
// 開く
individualEdit.Show();
}
private void BtnReturn_Click(object sender, EventArgs e)
{
this.Close();
}
/// <summary>
/// フォームに表示するユーザーコントロールをパネルから削除した後、明示的なDisposeで解放する。
/// </summary>
private void DisposeViewControls()
{
panelSearch.Controls.Clear();
panelDgv.Controls.Clear();
panelBtn.Controls.Clear();
_searchBoxControl.Dispose();
_customerDgvControl.Dispose();
_btnControl.Dispose();
}
private void M_CustomerMaster_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult result = MessageBox.Show("顧客マスタ画面を終了してもよろしいですか?", "確認", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.No)
{
e.Cancel = true;
return;
}
// イベントの登録を解除
_btnControl.BtnReturnClicked -= this.BtnReturn_Click;
// 明示的に解放する
DisposeViewControls();
if (this.Owner != null)
{
// 設定メニューを表示する
this.Owner.Show();
// 再描写を行う
this.Owner.Refresh();
}
}
}
}