プログラミング演習Ⅲ(2023)

【課題6-09】ランチメニュー ver 1.3

プロジェクトタイプC# WPFアプリケーション
プロジェクト名Prac_6_09
ソリューション名PET6
ターゲットフレームワーク.NET 6.0 (長期的なサポート)

※ 「WPFアプリ(.NET Framework)」ではないので注意せよ!

【課題6-08】で作成したアプリに, 新たなメニューを追加するためのテキストボックスとボタンを追加せよ.

画面イメージ
注意
  • この設問を解くには先に以下の課題を完了する必要がある.
  • 後述の空欄は前提課題の回答と 全く同じ にすること(変えてはならない).
  • GUI部品の名前やラベルの文言は必ず守ること(そうしないと採点ができないため).

このGUIアプリは_に示す部品を備える.

画面項目表
名前種別機能初期値/文言備考
listBox1リストボックスDishクラスのリストの表示(備考を参照)Dishクラスのリスト(後述)を表示するためのリストボックス.各要素を以下のフォーマットで表示する(「」は不要).

Name(Price円)

NameはそのDishクラスのインスタンスのNameプロパティ,PricePriceプロパティである.
button1ボタン「追加」ボタン追加クリックしたとき,以下の内容のDishクラスのインスタンスを作成し,リストに追加する.

【新たに作成するDishクラスのインスタンス】
・名前(Nameプロパティ)→textBox1の入力内容
・価格(Priceプロパティ)→textBxo2の入力内容を整数として解釈した値

ただし,以下のケースはエラーケースであるため,それぞれ指定された動作を行う.

textBox1~2のいずれかひとつでも空欄である場合】
 何もしない.

textBox2の入力内が整数として解釈できない場合】
 以下の内容のメッセージボックスを表示する.

・メッセージ→数値を入力してください.
・タイトル→エラー
・ボタン構成→OKボタンのみ
・アイコン→
label1ラベル静的な文言名前:-
label2ラベル静的な文言価格:-
textBox1テキストボックス「名前」の入力(空欄)「名前」を入力するためのテキストボックス.
詳細はbutton1の備考を参照せよ.
textBox2テキストボックス「価格」の入力(空欄)「価格」を入力するためのテキストボックス.
詳細はbutton1の備考を参照せよ.
(名前なし)ウィンドウ(メインウィンドウ)-プロジェクト作成時に自動作成されるメインウィンドウ.

【プロパティの指定】
・サイズは幅400×高さ300とする.

この設問には【課題6-08】と同じDishの定義が必要である. プロジェクトにクラスを追加1_のように【課題6-08】Dishクラスの定義を貼り付けて使用すること. この設問ではDishクラスの定義は【課題6-08】と全く同じものを使用すること

飲食店のメニューに掲載された個々の料理についての情報を表すクラス(Dish.cs)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Prac_6_09
{
    /*******************************/
    /*                             */
    /*           空欄1             */
    /*      Dishクラスの定義       */
    /*                             */
    /*     (【課題6-08】と同じ)    */
    /*                             */
    /*******************************/
}

なおMainWindowクラスは_のようにすること.

MainWindowクラスのテンプレート
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
public partial class MainWindow : Window
{
    private ObservableCollection<Dish> dishes; // Dishのリスト

    public MainWindow()
    {
        InitializeComponent();

        dishes = new ObservableCollection<Dish>();

        /**************************************************/
        /*                                                */
        /*                     空欄2                      */
        /*                                                */
        /**************************************************/
    }

    //  ..以下,必要に応じて自由に追記してよい..
    
}// end of class MainWindow

正しく実装できた場合,実行結果は_に示すような挙動となる23

実行結果

ヒント

なし


  1. プロジェクトを右クリック→「追加」→クラスを選択し,クラス名を入力して「作成」ボタンを押す. ↩︎

  2. Apple社の都合により,iPhone,iPadなどのデバイスでは動画の再生はできません(Apple社はスマートフォン/タブレット製品で,意図的?にVPxやAV1コーデックのサポートを遅らせているため.参考1参考2). ↩︎

  3. Microsoft Edge で動画を閲覧するためには,AV1 Extensionをインストールする必要があります. ↩︎

Last updated on 2023-11-14
Published on 2023-11-14

Powered by Hugo. Theme by TechDoc. Designed by Thingsym.