0

したがって、私の XML ファイルは次のようになります。

<?xml version="1.0" encoding="utf-8" ?>
<quiz>

</answers>
</question>

<!-- More questions here  -->

</quiz>

私の Form1.cs は次のようになります。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Xml.Linq;
using System.Drawing;

namespace WindowsFormsApplication1
{
    public partial class FormMain : Form
    {

基本的に、4 つのボタンすべてに、回答ではなく質問があり、左下のボタンの下に空白のボタンがあるように見えました。label1 の場所を表示する質問と、4 つの別々のボタンに回答を表示する方法を教えてください。また、複数の質問を追加し始めるときにどうすればよいですか (ユーザーは前の質問を正しく取得しない限り次の質問に進むことができず、最初に難易度を選択して別の質問セットを表示することができます)。

私はこれにしばらく取り組んできましたが、比較的初心者の C# の脳では理解できないため、新しい視点が必要だと思います。誰か助けてください。

4

2 に答える 2

0

この質問に対する答えを確認してください。はるかに簡単に対処できるのは、一致する構造で作成したクラスに XML を逆シリアル化することです。

XML ドキュメントを逆シリアル化する方法

詳細はこちら: http://msdn.microsoft.com/en-us/library/58a18dwa.aspx

于 2013-02-25T23:26:42.673 に答える
0

ループのたびにすべてのボタンのテキストを設定しています。

foreach (var question in _questions)
{
    button1.Text = question.QuestionText;
    button2.Text = question.QuestionText;
    button3.Text = question.QuestionText;
    button4.Text = question.QuestionText;
}

最後のループでは、各ボタンのテキストが最後の質問のテキストに設定されます。

また、フォームのフィールドとして定義された 4 つのボタンがあるため、少し奇妙に見えますが、PopulateFormメソッドで追加のボタンを作成していますが、何もしていません。

フィールドを取り除き、新しく作成されたボタンを直接操作する方がよいでしょう:

private void PopulateForm()
{
    int count = 0;

    foreach (var question in _questions)
    {
        var button = new Button();
        button.Size = new Size(60, 23);
        button.Location = new Point(100, 40 + (count * 30));
        button.Text = question.QuestionText;
        Controls.Add(button);
        count++;
    }
}

各ボタンの位置を別のものに設定する必要があります。そうしないと、すべて同じ場所に表示されます。


編集:

zip ファイル内のコードを見ると、必要なものは次のようになります (質問に 4 つの回答があると仮定します)。

private void PopulateForm()
{
    foreach (var question in _questions)
    {
        label1.Text = question.QuestionText;

        button1.Text = question.Answers[0];
        button2.Text = question.Answers[1];
        button3.Text = question.Answers[2];
        button4.Text = question.Answers[3];
    }
}
于 2013-02-25T23:26:53.173 に答える