Skip to content

Latest commit

 

History

History
260 lines (157 loc) · 12.9 KB

File metadata and controls

260 lines (157 loc) · 12.9 KB

第5章 画面を作成しよう

↑目次

←第4章 Modelクラスを作成しよう

いよいよ画面の作成に入ります。メニューと会議室一覧画面を作成していきましょう。

5.1 メニューを作成しよう

最初に会議室予約システムのアプリを起動して最初に表示されるメニューを作成しましょう。メニューは各機能を起動するボタンとアプリを終了するボタンがあるだけの簡単な画面です。

まず、画面プロジェクトを作成した際に自動で作成された、[Form1.cs]ファイルの名前を変更しましょう。[ソリューションエクスプローラー]にて[Form1.cs]をクリックして選択した後、F2キーを押してください。

ファイル名変更

名前を入力できる状態になるので、"MenuForm"と入力してEnterキーを押すと、名前が変更されます。その後、ファイル名に合わせてフォームクラス名も変更してよいか確認するダイアログが表示されるので、[はい]をクリックします。

クラス名変更確認ダイアログ

[ソリューションエクスプローラー]にて[MenuForm.cs]ファイルを選択し、[コードの表示]ボタンをクリックして、フォームのコードを確認すると、クラス名がForm1ではなくMenuFormに変更されています。

コードの表示

クラス名変更

次にメニュー画面のレイアウトを整えていきましょう。まず、機能仕様書を元に、[場所管理]、[会議室管理]、[予約管理]、[終了]の各ボタンを配置し、次のようにコントロール名をつけましょう。

ボタン コントロール名
場所管理 LocationButton
会議室管理 MeetingRoomButton
予約管理 ReservationButton
終了 CloseButton

ボタンを配置

今度はフォームを設定します。

  • タイトルは「会議室予約システム」
  • サイズを仕様書のように変更
  • フォームサイズ変更をできなくする
  • 最大化ボタンを無効にする

という要件を満たすため、次のようにフォームのプロパティを設定します。

プロパティ名
FormBorderStyle FixedSingle
MaximizeBox False
Size 290, 260
Text 会議室予約システム

その後、ボタンのサイズを「100, 40」に変更して位置を整え、次のようにレイアウトを調整します。

メニューフォームレイアウト

5.2 会議室一覧画面を作成しよう

続いて、会議室一覧画面を作成しましょう。

フォームの追加

[ソリューションエクスプローラー]にてMRRS.Viewプロジェクトを右クリックし、コンテキストメニューから[追加]-[Windowsフォーム]をクリックします。

フォームの追加

[新しい項目の追加]ダイアログにて、テンプレートで[Windowsフォーム]が選択されていることを確認し、[名前]欄に"MeetingRoomListForm"と入力して[追加]ボタンをクリックします。

会議室一覧画面の追加

場所の追加

フォームに場所のラベルとコンボボックスコントロールを追加し、それぞれ次のようにプロパティを設定します(コントロールの位置は適当な位置でよい)。

ラベル

プロパティ
(Name) locationLabel
Text 場所

コンボボックス

プロパティ
(Name) locationComboBox
DropDownStyle DropDownList

場所項目の追加

続いて、場所コンボボックスの選択項目をデータバインドするため、コントロールを選択して右上に出る[スマートタグ]をクリックします。すると[ComboBoxタスク]ウィンドウが表示されるので、[データバインド項目を使用する]にチェックを入れ、[データソース]をクリックして開き、[プロジェクトデータソースの追加]をクリックします。

場所用データソースの追加

[データソース構成ウィザード]ダイアログの[データソースの種類の選択]画面が表示されたら、[アプリケーションのデータの取得元を指定してください]で[オブジェクト]を選び、[次へ]ボタンをクリックします。

場所用データソースの構成

[データオブジェクトの選択]画面が表示されたら、[どのオブジェクトにバインドしますか?]欄でMRRS.Sharedプロジェクトに作成したMRRS.Shared.Entities.Locationクラスにチェックを入れ、[完了]ボタンをクリックします。

Locationクラスの選択

フォームデザイナーに戻ると、下部にBindingSourceコンポーネント[locationBindingSource]が追加されています(この部分を「コンポーネントトレイ」と呼びます)。そして、[ComboBoxタスク]の[データソース]で[locationBindingSource]が選択された状態になるので、そのまま[表示メンバー]に[Name]、値メンバーに[Id]を指定します(Locationクラスのプロパティが選択できます)。これで、ComboBoxにはLocationクラスのNameプロパティの値が表示され、選択値はIdプロパティの値が取得できるようになります。

場所ComboBoxのデータバインド設定

会議室一覧の追加

今度は会議室一覧を表示するDataGridViewコントロールを追加します。すると、、次のようにスマートタグが展開され[DataGridViewタスク]が表示されます。この画面のグリッドは参照専用なので、[追加を有効にする]、[編集を有効にする]、[削除を有効にする]のチェックを外します。

DataGridViewを参照専用に設定

次に、場所ComboBoxと同様に、こちらも会議室データに対するデータバインド設定を行います。[データソースの選択]をクリックし、再び[プロジェクトデータソースの追加]を選びます。

会議室用データソース追加

今度はMRRS.Shared.Entities.MeetingRoomクラスを選びます。

MeetingRoomクラスの選択

すると、[コンポーネントトレイ]に[meetingRoomBindingSource]が追加され、[DataGridViewタスク]の[データソースの選択]でも選ばれた状態になります。また、DataGridViewコントロールに自動的にMeetingRoomクラスのプロパティに対応した列が追加されます。

会議室DataGridViewのデータバインド設定

このままDataGridViewの列を編集しましょう。[DataGridViewタスク]の[列の編集]をクリックします。

列の編集

既定で追加された列の内、[Id]、[Location]、[LocationId]を削除します。次に[LocationName]を[Name]列の前に移動し、それぞれの[HeaderText]プロパティを次のように変更します。

HeaderText
LocationName 場所
Name 名称

列の整理

今度は[変更]、[削除]ボタン列を追加します。まず[変更]列を追加するため、[追加]ボタンをクリックして[列の追加]ダイアログを表示します。そして[非バインド列」を選択し、[名前]に"modifyDataGridViewButtonColumn"、型を[DataGridViewButtonColumn]、[ヘッダーテキスト]を空にして[追加]ボタンをクリックします。同様に[削除]列も[名前]を"deleteDataGridViewButtonColumn"にして登録します。

ボタン列の追加

追加したボタン列は、ボタンのキャプションを表示するため、[UseColumnTextForButtonValue]プロパティを[True]にし、[Text]プロパティにそれぞれ、"変更"、"削除"を入力します。

ボタン列のキャプション設定

最後に各列の幅を調整するため、Widthプロパティを次のように設定します。

Width
場所 100
名称 180
変更ボタン 60
削除ボタン 60

列の幅の設定

設定を終えたら[OK]ボタンをクリックしてください。フォームデザイナー上のDataGridViewに設定内容が反映されます。

列の設定後

最後にDataGridViewのプロパティを次のように設定します。

プロパティ名
(Name) meetingRoomDataGridView
Anchor Top, Left, Right, Bottom
Location 20, 70

[Anchor](anchor:錨)プロパティは、[プロパティ]ウィンドウでクリックして展開して、上下左右で固定したいところをクリックして選択できます。

Anchorプロパティの設定

最後に、グリッドの列が全部表示される程度までフォームを大きくします。また、ウィンドウのタイトルも設定しましょう。次のようにフォームのプロパティを設定してください。

プロパティ名
Size 520, 300
Text 会議室管理

完成したグリッド

ボタンの追加

今度はフォームにボタンを追加しましょう。[検索]、[新規登録]、[閉じる]の各ボタンを追加し、次のようにプロパティを設定します。

検索ボタン

プロパティ名
(Name) searchButton
Text 検索

新規登録ボタン

プロパティ名
(Name) addNewButton
Anchor Bottom, Left
Text 新規登録

閉じるボタン

プロパティ名
(Name) closeButton
Anchor Bottom, Right
Text 閉じる

ボタンの追加

タブ順の設定

画面作成の最後に、画面の項目のタブ順(Tabキーを押したときにカーソルが移動する順番)を設定します。

[表示]メニューの[タブオーダー]を選択します。

完成したグリッド

すると、各項目の現在の[TabIndex](タブインデックス)プロパティの値が表示されます。タブ順を設定するには、画面の項目を順番にクリックします。今回は[場所]コンボボックスから始まり、[検索]ボタン→、[会議櫃一覧]グリッド、[新規登録]ボタン、[閉じる]ボタンの順にクリックし、最後にESCキーを押してタブ順の設定を終わります。

タブ順の設定

5.3 メニューから呼び出そう

会議室一覧画面ができたので、メニューから呼び出してみましょう。[ソリューションエクスプローラー]にて[MenuForm.cs]をダブルクリックして、MenuFormのフォームデザイナーを開きます。

MenuFormの表示

[会議室管理]ボタンのClickイベントハンドラーを作成するため、フォームデザイナー上で[会議室管理]ボタンをダブルクリックします。

会議室管理ボタンClickイベントハンドラー作成

作成されたイベントハンドラーに、会議室一覧画面を表示するコードを記入します。

リスト 5-1 会議室一覧画面表示処理(MenuForm.csより)

private void meetingRoomButton_Click(object sender, EventArgs e)
{
    using (var form = new MeetingRoomListForm())
    {
        form.ShowDialog();
    }
}

ここでアプリを実行してここまでの画面が正しく作れたか確認しましょう。F5キーを押してデバッグ実行します。すると、メニュー画面が表示されます。

アプリの起動

ここで[会議室管理]ボタンをクリックします。すると、会議室一覧画面が表示されます。

会議室管理起動

ようやく開発対象機能の画面を表示することができました。次は画面からModelの処理を呼び出してみましょう。

→第6章 Modelクラスをの処理を画面から呼び出そう