広告
Xamarin.Forms
- 「英語クイズ」を作るために「正解のページ追加」「AnswerPage.xamlでラベル」「AnswerPage.xaml.csで文字列」「リストのアイテムをクリックした場合」「音声の英単語が正解の場合」を解説します。
- ランダムに英単語の意味を英語で再生し、新たに作成した「AnswerPage」ページで正誤を表示します。
- iOS版はここで完成です。
プログラミング解説
- 正解のページ追加
- 「EnglishQuiz」フォルダで右クリックメニューで「追加」→「新しいファイル」を実行します。
- 「Forms」→「Forms ContentPage Xaml」を選び、「名前」を「AnswerPage」にして「新規」ボタンをクリックします。
- AnswerPage.xamlでラベル
<ContentPage.Content> <Label x:Name="_answerLabel" Text="正解" VerticalOptions="Center" HorizontalOptions="Center" FontSize="50" FontAttributes="Bold" /> </ContentPage.Content>
- 「AnswerPage.xaml」を開きます。
- 「<Label x:Name="_answerLabel" Text="正解" VerticalOptions="Center" HorizontalOptions="Center" FontSize="50" FontAttributes="Bold" />」でラベル「Label」の名前を「_answerLabel」に、縦横の配置を中央に、フォントサイズを「50」で「太字」に定義します。
- AnswerPage.xaml.csで文字列
public AnswerPage(string answer) { InitializeComponent(); _answerLabel.Text = answer; }
- 「AnswerPage.xaml.cs」を開きます。
- 「public AnswerPage(string answer)」で引数に「answer」文字列を持ったコンストラクタを宣言しています。
- 「_answerLabel.Text = answer;」でラベルの「Text」文字に「answer」変数を代入しています。
- リストのアイテムをクリックした場合
_englishListView.ItemSelected += (sender, e) => { string str = "間違い"; Navigation.PushAsync(new AnswerPage(str)); };
- 「EnglishQuizPage.xaml.cs」を開きます。
- 「_englishListView.ItemSelected += (sender, e) =>」でリストビューのアイテムが選択された場合に呼ばれます。
- 「string str = "間違い";」で「str」に「間違い」を代入します。
- 「Navigation.PushAsync(new AnswerPage(str));」でAnswerPageに引数「str」を渡して、正誤ページへページ遷移します。
- IDE左上の▶ボタンをクリックしたら「間違い」と大きく書かれたページへ遷移しましたね?
- 音声の英単語が正解の場合
_englishListView.ItemSelected += (sender, e) => { string str = "間違い"; if (_english.IndexOf((ItemClass)(_englishListView.SelectedItem)) == App._currentText) { str = "正解"; int pre = App._currentText; while (pre == App._currentText) App._currentText = rnd.Next(_english.Count); } Navigation.PushAsync(new AnswerPage(str)); };
- 「if (_english.IndexOf((ItemClass)(_englishListView.SelectedItem)) == App._currentText)」で、もしクリックされたアイテム番号が、現在の音声番号と一致した場合です。
- 「str = "正解";」で「str」に「正解」を代入します。
- 「int pre = App._currentText;」で今答えた音声の番号を「pre」に代入します。
- 「while (pre == App._currentText) App._currentText = rnd.Next(_english.Count);」で、「pre」と音声番号「_currentText」が一緒な限り「_currentText」に乱数の代入を繰り返します。
- IDE左上の▶ボタンをクリックしたら「正解」か「間違い」と大きく書かれたページへ遷移しましたね?
- iOS版はこれで完成です。