【課題5-03】ランチメニュー ver 1.0
プロジェクトタイプ | C# WPFアプリケーション |
---|---|
プロジェクト名 | Prac_5_03 |
ソリューション名 | PET5 |
ターゲットフレームワーク | .NET 6.0 (長期的なサポート) |
※ 「WPFアプリ(.NET Framework)」ではないので注意せよ!
_に示すような,ランチメニューの選択とその小計を計算するアプリを作成せよ.
注意
- GUI部品の名前やラベルの文言は必ず守ること(そうしないと採点ができないため).
このGUIアプリは_に示す部品を備える.
名前 | 種別 | 機能 | 初期値/文言 | 備考 |
---|---|---|---|---|
button1 | ボタン | 「会計」ボタン | 会計 | メッセージボックス表示ボタン. クリックしたとき「メニュー」で選ばれている商品と,「サイドメニュー」で選ばれている商品の合計金額を以下のフォーマットで label1 に表示する(「」は不要).「 小計: 合計金額 円 」合計金額 は選択した「メニュー」,「サイドメニュー」の合計金額である(消費税などは考慮しない). |
groupBox1 | グループボックス | 部品の配置 | メニュー | ラジオボタンradioButton1~4 を配置するためのグループボックス. |
radioButton1 | ラジオボタン | メニューの選択 | チェックオン / 牛丼(300円) | メニューを切り替えるためのラジオボタン - その1.button1 の備考も参照せよ. |
radioButton2 | ラジオボタン | メニューの選択 | チェックオフ / 親子丼(350円) | メニューを切り替えるためのラジオボタン - その2.button1 の備考も参照せよ. |
radioButton3 | ラジオボタン | メニューの選択 | チェックオフ / カツ丼(400円) | メニューを切り替えるためのラジオボタン - その3.button1 の備考も参照せよ. |
radioButton4 | ラジオボタン | メニューの選択 | チェックオフ / カレー(500円) | メニューを切り替えるためのラジオボタン - その4.button1 の備考も参照せよ. |
groupBox2 | グループボックス | 部品の配置 | サイドメニュー | ラジオボタンradioButton5~8 を配置するためのグループボックス. |
radioButton5 | ラジオボタン | サイドメニューの選択 | チェックオン / みそ汁(50円) | サイドメニューを切り替えるためのラジオボタン - その1.button1 の備考も参照せよ. |
radioButton6 | ラジオボタン | サイドメニューの選択 | チェックオフ / サラダ(100円) | サイドメニューを切り替えるためのラジオボタン - その2.button1 の備考も参照せよ. |
radioButton7 | ラジオボタン | サイドメニューの選択 | チェックオフ / おしんこ(30円) | サイドメニューを切り替えるためのラジオボタン - その3.button1 の備考も参照せよ. |
radioButton8 | ラジオボタン | サイドメニューの選択 | チェックオフ / 豚汁(120円) | サイドメニューを切り替えるためのラジオボタン - その4.button1 の備考も参照せよ. |
label1 | ラベル | 計算結果の表示 | 小計:---円 | 計算結果を表示するためのラベル.button1 の備考も参照せよ.【プロパティの指定】 ・ FontSize プロパティに24 を指定すること. |
(名前なし) | ウィンドウ | (メインウィンドウ) | - | プロジェクト作成時に自動作成されるメインウィンドウ. 【プロパティの指定】 ・サイズは幅400×高さ300とする. |
正しく実装できた場合,実行結果は_に示すような挙動となる1,2.
ヒント
チェック処理の判定の簡易化
- ラジオボタンごとに「チェックされているかどうか」を調べる処理を書くのは煩雑となるので,以下のような配列を作り繰り返し文を使って どれがチェックされているか をチェックすることで簡潔に処理を記述できる.
- メニューのための配列(
RadioButton[]
型,radioButton1~4
を入れておく) - サイドメニューのための配列(
RadioButton[]
型,radioButton5~8
を入れておく)
- メニューのための配列(
チェック処理の判定の簡易化 : 閉じる
.Tagプロパティ
- WPFのほとんどのGUI部品には.Tagプロパティが存在する.このプロパティには任意のデータを保存することができる.
- GUI部品の
.Tag
プロパティに,対応する価格を書き込んでおくと合計金額の算出処理が少し楽になる. Tag
プロパティの型はobject
型(≒なんでも代入できる)である点に注意する必要がある.- XAML上でこのプロパティに値を設定すると,プロパティの値として
string
型の値が設定される. - したがって,コードビハインドの処理でその値を取り出すには
Tag
プロパティの値をstring
型にキャストする必要がある .
- GUI部品の
.Tagプロパティ : 閉じる
Apple社の都合により,iPhone,iPadなどのデバイスでは動画の再生はできません(Apple社はスマートフォン/タブレット製品で,意図的?にVPxやAV1コーデックのサポートを遅らせているため.参考1,参考2). ↩︎
Microsoft Edge で動画を閲覧するためには,AV1 Extensionをインストールする必要があります. ↩︎