# 顧客マスタ個別編集画面レイアウト調整手順書
## 概要
顧客マスタの個別編集画面の配置とフォームサイズを調整し、他の個別編集画面と同様に余白が目立たないようなレイアウトに変更します。
## 現状の問題点
### 現在の設定
- **フォームサイズ**:ClientSize = new Size(1600, 900)
- **最小サイズ**:MinimumSize = new Size(1200, 700)
- **TableLayoutPanel**:中央に1200px固定幅のカラムを持ち、左右に50%ずつの余白
- **Designer.csの設定**:ClientSize = new Size(1355, 701)と異なるサイズが設定されている
### 問題
- 左右の余白が大きすぎて、画面の有効活用ができていない
- コード内とDesignerファイルでサイズ設定が異なる
## 修正方針
### 目標
- 余白を最小限に抑え、画面全体を有効活用
- 他の個別編集画面(送信パターンマスタ個別編集画面など)と統一感のあるレイアウト
### 実装方法
1. TableLayoutPanelの余白設定を変更
2. フォームサイズを適切に調整
3. コントロールの配置を最適化
## 実装手順
### ステップ1: TableLayoutPanelの余白調整
#### 1.1 M_CustomerMasterIndividualEdit.Designer.csの修正
現在の設定:
```csharp
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 1200F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
```
修正後:
```csharp
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
```
これにより、左右の余白を20ピクセルに固定し、中央のコンテンツエリアが画面幅に応じて拡張されるようになります。
### ステップ2: フォームサイズの統一
#### 2.1 M_CustomerMasterIndividualEdit.csの修正
現在のコンストラクタ内の設定を確認し、必要に応じて調整します:
```csharp
public M_CustomerMasterIndividualEdit(ButtonMode buttonMode = ButtonMode.Register, CustomerMasterDto customer = null)
{
InitializeComponent();
_btnMode = buttonMode;
// フォームサイズの設定(Designer.csの設定を上書きしている)
this.ClientSize = new Size(1600, 900);
this.MinimumSize = new Size(1200, 700);
// ウィンドウサイズを固定にする
this.FormBorderStyle = FormBorderStyle.FixedSingle;
// 現在の画面の中央に表示する
this.StartPosition = FormStartPosition.CenterScreen;
```
この設定は適切なので、Designer.csの設定が上書きされることを確認します。
### ステップ3: Visual Studioデザイナーでの修正(推奨)
Visual Studioのデザイナーを使用して以下の修正を行うことを推奨します:
1. **M_CustomerMasterIndividualEdit.cs [Design]**を開く
2. **tableLayoutPanel1**を選択
3. **Properties**ウィンドウで以下を設定:
- ColumnStyles コレクションを編集
- Column1: Absolute, 20px
- Column2: Percent, 100%
- Column3: Absolute, 20px
4. フォームのプロパティを確認:
- ClientSize: 1600, 900(コードで設定されるため、デザイナーでの値は無視される)
### ステップ4: コード修正による実装(Visual Studioデザイナーを使用しない場合)
#### 4.1 Designer.csファイルの直接修正
```csharp
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 3;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel1.Controls.Add(this.panel1, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.panel2, 1, 1);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 2;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 90F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(1600, 900);
this.tableLayoutPanel1.TabIndex = 0;
```
#### 4.2 panel1の位置調整
```csharp
// panel1
//
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(23, 3);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(1554, 804);
this.panel1.TabIndex = 0;
```
#### 4.3 panel2の位置調整
```csharp
// panel2
//
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel2.Location = new System.Drawing.Point(23, 813);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(1554, 84);
this.panel2.TabIndex = 1;
```
## テストシナリオ
### シナリオ1: レイアウトの確認
1. 顧客マスタ個別編集画面を開く
2. 左右の余白が適切(20ピクセル)であることを確認
3. コンテンツエリアが画面幅いっぱいに表示されることを確認
### シナリオ2: コントロールの表示確認
1. すべてのテキストボックス、ラベル、ボタンが正しく表示されることを確認
2. 文字が切れたり、コントロールが重なったりしていないことを確認
### シナリオ3: 他の画面との整合性確認
1. 送信パターンマスタ個別編集画面を開く
2. 顧客マスタ個別編集画面と同様のレイアウトであることを確認
## 実装の注意点
### 1. Designer.csファイルの編集
- Visual Studioのデザイナーを開くと、手動で編集した内容が上書きされる可能性がある
- 可能な限りVisual Studioのデザイナーを使用して修正することを推奨
### 2. DockプロパティとLocationプロパティ
- DockプロパティがFillに設定されている場合、Locationプロパティは自動的に計算される
- 手動でLocationを設定しても、実行時には無視される
### 3. フォームサイズの優先順位
- コンストラクタ内でのClientSize設定がDesigner.csの設定を上書きする
- 統一性を保つため、コード内での設定を優先する
## 実装チェックリスト
- [ ] TableLayoutPanelのColumnStylesを修正(左右20px、中央100%)
- [ ] フォームサイズがコード内で正しく設定されていることを確認
- [ ] コンパイルエラーがないことを確認
- [ ] 画面を開いて余白が適切であることを確認
- [ ] すべてのコントロールが正しく表示されることを確認
- [ ] 他の個別編集画面と同様のレイアウトであることを確認
## 代替案
### 代替案1: Paddingプロパティの使用
TableLayoutPanelの代わりに、フォームやパネルのPaddingプロパティを使用して余白を設定する方法もあります。
```csharp
this.Padding = new Padding(20);
```
### 代替案2: Anchorプロパティの使用
DockプロパティではなくAnchorプロパティを使用して、コントロールの配置を制御する方法もあります。
## まとめ
この修正により、顧客マスタ個別編集画面の余白が最小限に抑えられ、画面全体を有効活用できるようになります。他の個別編集画面と統一感のあるレイアウトを実現し、ユーザーにとって使いやすい画面構成となります。