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

【課題9-08】自己紹介アプリ ver 1.9

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

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

【課題7-06】を改造して, あらかじめ用意されているIntroductionInfoクラス(【課題9-03】)のオブジェクトの内容を テキストボックスなどのGUI部品で編集することができるアプリを作成せよ.

画面イメージ

レイアウトは_のよう5行2列のレイアウトにすること.

レイアウト
注意
  • この設問を解くには先に以下の課題を完了する必要がある.
  • 後述の空欄は前提課題の回答と 全く同じ にすること(変えてはならない).
  • GUI部品の名前やラベルの文言は必ず守ること(そうしないと採点ができないため).
  • この設問では ツールボックスを使わずに XAMLファイルを直接編集してウィンドウの定義を作成すること.

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

画面項目表
名前種別機能初期値/文言備考
label1ラベル静的な文言学籍番号:【プロパティの指定】
VerticalAlignmentプロパティにCenterを指定すること.
label2ラベル静的な文言氏名:【プロパティの指定】
VerticalAlignmentプロパティにCenterを指定すること.
label3ラベル静的な文言好きな言葉:【プロパティの指定】
VerticalAlignmentプロパティにCenterを指定すること.
label4ラベル静的な文言誕生日:【プロパティの指定】
VerticalAlignmentプロパティにCenterを指定すること.
textBox1テキストボックス「学籍番号」の入力(備考を参照)「学籍番号」を入力するためのテキストボックス.データバインディングを用いて後述するIntoroductionInfoオブジェクトと.StudentIDプロパティの内容を表示・編集する.

【プロパティの指定】
VerticalAlignmentプロパティにCenterを指定すること.
textBox2テキストボックス「氏名」の入力(備考を参照)「氏名」を入力するためのテキストボックス.データバインディングを用いて後述するIntoroductionInfoオブジェクトと.Nameプロパティの内容を表示・編集する.
詳細はbutton1の備考を参照せよ.

【プロパティの指定】
VerticalAlignmentプロパティにCenterを指定すること.
textBox3テキストボックス「好きな言葉」の入力(備考を参照)「好きな言葉」を入力するためのテキストボックス.データバインディングを用いて後述するIntoroductionInfoオブジェクトと.Mottoプロパティの内容を表示・編集する.
詳細はbutton1の備考を参照せよ.

【プロパティの指定】
VerticalAlignmentプロパティにCenterを指定すること.
datePicker1DatePicker「誕生日」を入力するための部品(空欄)「誕生日」を入力するためのDatePicker.データバインディングを用いて後述するIntoroductionInfoオブジェクトと.Birthdayプロパティの内容を表示・編集する.
button1の備考も参照せよ.

【プロパティの指定】
VerticalAlignmentプロパティにCenterを指定すること.
button1ボタン「自己紹介を保存」ボタン自己紹介を確認現在のIntroductionInfoオブジェクトの内容をメッセージボックスで表示するためのボタン.

このボタンの処理内容は後述するテンプレートであらかじめ実装されている ため詳細は省略する.

【課題7-06】とはボタンの文言が異なるので注意せよ.

【プロパティの指定】
VerticalAlignmentプロパティにCenterを指定すること.
(名前なし)ウィンドウ(メインウィンドウ)自己紹介アプリ ver 1.9プロジェクト作成時に自動作成されるメインウィンドウ.

【プロパティの指定】
・サイズは幅400×高さ300とする.
背景色はデフォルトの白以外に設定する
・左記の「初期値/文言」の列とおり文言,つまりタイトルを指定する.

この設問には【課題9-03】で作った,自己紹介についての情報を表すクラス IntroductionInfoの定義が必要である. プロジェクトにクラスを追加1_のように【課題9-03】IntroductionInfoクラスの定義を貼り付けて使用すること.

自己紹介についての情報を表すクラス(IntroductionInfo.cs)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Prac_9_08
{
    /********************************/
    /*                              */
    /*            空欄1             */
    /* IntroductionInfoクラスの定義 */
    /*     (【課題9-03】と同じ)     */
    /*                              */
    /********************************/
}

なおMainWindowクラスは_のようにすること. このクラスの定義は一切変更してはならない. フィールドやプロパティ,メソッド(イベントハンドラ)などの追加および削除は一切行ってはならない

MainWindowクラスのテンプレート
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public partial class MainWindow : Window
{
    // 表示・編集対象の IntroductionInfo クラスのオブジェクト
    private IntroductionInfo intro;

    public MainWindow()
    {
        InitializeComponent();

        // intro の初期化
        this.intro = new IntroductionInfo()
        {
            StudentID = "HI022098",
            Name = "医療花子",
            Motto = "質実剛健",
            Birthday = new DateTime(2003, 8, 30)
        };
             
        // ウィンドウ自体の DataContext に↑のintroを関連付けておく
        this.DataContext = intro;
    }

    // button1 のイベントハンドラ(変更してはならない)
    private void button1_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show(
              $"学籍番号: {this.intro.StudentID}{Environment.NewLine}"
            + $"名前: {this.intro.Name}{Environment.NewLine}"
            + $"好きな言葉: {this.intro.Motto}{Environment.NewLine}"
            + $"誕生日: {this.intro.Birthday:yyyy年MM月dd日}",
                "確認", MessageBoxButton.OK, MessageBoxImage.Information);
    }    

}// end of class MainWindow

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

実行結果

ヒント

なし


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

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

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

Last updated on 2023-12-11
Published on 2023-12-11

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