# 送信者情報マスタ画面レイアウト調整手順書
## 概要
送信者情報マスタ画面の余白を調整し、サイズ変更を制限します。また、「Chatwork送信用アカウント名」欄を「テスト送信者ルームID」欄の右端と同じ長さに引き伸ばします。
## 現状の分析
### 現在の設定
- **フォームサイズ**:ClientSize = new Size(1200, 400)
- **FormBorderStyle**:FixedSingle(既に設定済み、サイズ変更不可)
- **パネル構成**:単一のパネルにSenderInfoControlを配置
- **SenderInfoControl内のレイアウト**:
- APIトークン欄:幅598px
- テスト送信先ルームID欄:幅230px
- Chatwork送信用アカウント名欄:幅294px(調整が必要)
### 問題点
1. 四方の余白が大きい
2. 「Chatwork送信用アカウント名」欄が短い
## 修正方針
### 目標
1. 四方の余白を最小限に抑える(設計書サンプル程度、右側の余白はカット)
2. 「Chatwork送信用アカウント名」欄を「テスト送信者ルームID」欄の右端まで延長
3. 画面の最大化・サイズ調整不可(既に設定済み)
## 実装手順
### ステップ1: TableLayoutPanelの追加によるレイアウト管理
#### 1.1 M_SenderMaster.Designer.csの修正
現在は単一のパネルを使用していますが、余白を管理するためにTableLayoutPanelを追加します。
```csharp
private void InitializeComponent()
{
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.panel = new System.Windows.Forms.Panel();
this.tableLayoutPanel1.SuspendLayout();
this.SuspendLayout();
//
// 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.panel, 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 = 3;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(1200, 400);
this.tableLayoutPanel1.TabIndex = 0;
```
### ステップ2: SenderInfoControl内のレイアウト調整
#### 2.1 SenderInfoControl.csの修正
Loadイベントまたはコンストラクタで、「Chatwork送信用アカウント名」欄の幅を調整します。
```csharp
private void SenderInfoControl_Load(object sender, EventArgs e)
{
// 既存のコード...
// Chatwork送信用アカウント名欄の幅を調整
// テスト送信先ルームID欄の右端位置を計算
int testRoomIdRight = testRoomIDTxtBox.Location.X + testRoomIDTxtBox.Width;
// Chatwork送信用アカウント名欄の幅を調整
senderNameMemoTxtBox.Width = testRoomIdRight - senderNameMemoTxtBox.Location.X;
}
```
### ステップ3: コントロールの配置最適化
#### 3.1 余白の調整
SenderInfoControl内のコントロールの位置を調整して、余白を最小限にします。
```csharp
// 左側の余白を20pxに設定
lblApiToken.Location = new Point(20, lblApiToken.Location.Y);
apiTokenTxtBox.Location = new Point(20, apiTokenTxtBox.Location.Y);
lblSenderNameMemo.Location = new Point(20, lblSenderNameMemo.Location.Y);
senderNameMemoTxtBox.Location = new Point(20, senderNameMemoTxtBox.Location.Y);
```
## 代替実装方法(コード内での動的調整)
### M_SenderMaster.csでの実装
```csharp
public M_SenderMaster()
{
InitializeComponent();
this.ActiveControl = null;
this.ClientSize = new Size(1200,400);
// ウィンドウサイズを固定にする(既に設定済み)
this.FormBorderStyle = FormBorderStyle.FixedSingle;
// 最大化ボタンを無効化
this.MaximizeBox = false;
// 現在の画面の中央に表示する
this.StartPosition = FormStartPosition.CenterScreen;
// パネルに余白を設定
this.Padding = new Padding(20);
_senderInfo = new SenderInfoControl();
_senderInfo.Dock = DockStyle.Fill;
panel.Controls.Add(_senderInfo);
this.ActiveControl = panel;
}
```
### SenderInfoControl.csでの実装
```csharp
private void AdjustControlLayouts()
{
// テスト送信先ルームID欄の右端位置を取得
int rightMostPosition = testRoomIDTxtBox.Location.X + testRoomIDTxtBox.Width;
// Chatwork送信用アカウント名欄の幅を調整
senderNameMemoTxtBox.Width = rightMostPosition - senderNameMemoTxtBox.Location.X;
// 左側の余白を調整(20pxに統一)
int leftMargin = 20;
lblApiToken.Location = new Point(leftMargin, lblApiToken.Location.Y);
apiTokenTxtBox.Location = new Point(leftMargin, apiTokenTxtBox.Location.Y);
lblSenderNameMemo.Location = new Point(leftMargin, lblSenderNameMemo.Location.Y);
lblSenderNameMemoNote.Location = new Point(leftMargin, lblSenderNameMemoNote.Location.Y);
senderNameMemoTxtBox.Location = new Point(leftMargin, senderNameMemoTxtBox.Location.Y);
}
```
## テストシナリオ
### シナリオ1: レイアウトの確認
1. 送信者情報マスタ画面を開く
2. 四方の余白が適切(20ピクセル程度)であることを確認
3. 画面内のコントロールが適切に配置されていることを確認
### シナリオ2: テキストボックスの幅確認
1. 「Chatwork送信用アカウント名」欄の右端が「テスト送信者ルームID」欄の右端と揃っていることを確認
2. 各テキストボックスに文字を入力して、適切に表示されることを確認
### シナリオ3: サイズ変更制限の確認
1. ウィンドウの境界をドラッグしてサイズ変更できないことを確認
2. 最大化ボタンが無効化されていることを確認
## 実装の注意点
### 1. アンカー設定の確認
SenderInfoControl内のコントロールのAnchorプロパティが適切に設定されていることを確認します。現在はAnchorStyles.Noneに設定されているため、動的な調整が必要です。
### 2. フォント設定との整合性
FontSettingHelperによるフォント設定が適用された後でも、レイアウトが崩れないことを確認します。
### 3. 最小サイズの考慮
すべてのコントロールが表示できる最小サイズを確保します。
## 実装チェックリスト
### M_SenderMaster
- [ ] Paddingプロパティまたは余白管理の実装
- [ ] MaximizeBoxプロパティをfalseに設定
- [ ] コンパイルエラーがないことを確認
### SenderInfoControl
- [ ] Chatwork送信用アカウント名欄の幅調整
- [ ] 左側余白の調整(20pxに統一)
- [ ] 右側余白の確認と調整
### 動作確認
- [ ] 四方の余白が適切であること
- [ ] テキストボックスの幅が正しく調整されていること
- [ ] サイズ変更ができないこと
- [ ] すべてのコントロールが正しく表示されること
## まとめ
この修正により、送信者情報マスタ画面の余白が最小限に抑えられ、画面スペースが有効活用されます。また、「Chatwork送信用アカウント名」欄が適切な長さに調整され、使いやすさが向上します。