0

C# を使用してウィンドウ電話アプリケーションに取り組んでいます。2 つのテキスト ブロックと 4 つのラジオ ボタンがあります。最初のテキスト ブロックは質問を表示するためのもので、2 番目のテキスト ブロックはインクリメントされた変数を結果として表示するためのものです。ページを読み込むと、テキスト ブロックに最初の質問が表示されます。ラジオボタンをチェックしてアプリケーションバーをクリックすると、プログラムはチェックされたラジオボタンをブール値で検証し、右のラジオボタンがチェックされている場合は変数 a にインクリメントを追加し、textBlock1.text を別のテキストに変更します (2 番目の質問)。 . 次に、別のラジオ ボタンのチェックとアプリ バーのクリックを上記の手順を繰り返す必要があります。次に、3 つの質問の後、変数 a の最終値が 2 番目の textBlock に表示されます。質問を入力するために、この配列を使用しましたが、機能しませんでした:

public void Click_AppBar(object sender, System.EventArgs e)
        {
            // TODO: Add event handler implementation here.

        String[] pages = 
        {"welcome to question 2", 
            "welcome to question 3",
            "welcome to question 4"};
        foreach (string s in pages)
            textBlock1.Text = (s);
    }`

そしてそれはうまくいきませんでした。テキストブロックに「質問4へようこそ」としか表示されませんでしたが、このサイトから取得したこのコードを試してみたところ、うまくいきました:

 `private List<string> questions= new List<string>()
        {"welcome to question 2", "welcome to question 3", "welcome to question 4"};
        private int clickCount = 0;

        protected void Click_AppBar(object sender, EventArgs e)
        {
        textBlock1.Text = questions[clickCount];
        clickCount++;
        if (clickCount == questions.Count)
        clickCount = 0;`

この配列は、クリックごとの質問を正常に表示しましたが、クリックしている限り、質問 2、3、4 の変更を継続的に表示し続けます。また、ブールチェックを検証し、右のラジオボタンがチェックされている場合に変数をインクリメントするコードを追加する方法がわかりません。
これは現在使用しているコードです

`public void Click_AppBar(object sender, System.EventArgs e)
    {
        // TODO: Add event handler implementation here.

        int a= 0;
            if (RadioA.IsChecked == true)
            {

                a++;

            }

            textBlock1.Text = ("welcome to question 2");

            else if (RadioB.IsChecked == true)
            {

                a++;

            }

            textBlock1.Text = ("welcome to question 3");
            else if (RadioC.IsChecked == true)
            {

                a++;

            }

            ShowResult.Text = (a.ToString());
            MessageBox.Show("You have finished");
        }

    }`

私は、1) インクリメント、2) ラジオ ボタン ブール値の検証と免除の管理について助けを求めています。私はちょうど1年間C#を学んでいます。まだ学習中なので、私のコードは気にしないでください。ありがとう

4

1 に答える 1

0

ここにあなたが望むものがあると思います:

private List<Questions> questions = new List<Questions>()
    {
        new Questions()
        {
             Question = "welcome to question 1",
             CorrectAnswer = 2,
        },
        new Questions()
        {
             Question = "welcome to question 2",
             CorrectAnswer = 1,
        },
        new Questions()
        {
            Question =  "welcome to question 3",
            CorrectAnswer = 3,
        },
        new Questions()
        {
            Question = "welcome to question 4",
            CorrectAnswer = 2,
        },

    };
    int currentQuestionIndex = 0;
    private int numberCorectAnswer = 0;

    public List<RadioButton> listRadioButton = null;

    public void Click_AppBar(object sender, System.EventArgs e)
    {
        if (listRadioButton == null)
        {
            listRadioButton = new List<RadioButton>()
            {
                RadioA,
                RadioB,
                RadioC,
            };
        }
        Questions previousQuestions = this.questions[currentQuestionIndex];

        if (listRadioButton[previousQuestions.CorrectAnswer].IsChecked == true)
        {

            numberCorectAnswer++;
        }


        if (currentQuestionIndex == questions.Count-1)
        {
            MessageBox.Show("You have finished, number correct answer:" +numberCorectAnswer);
        }

        currentQuestionIndex++;
        textBlock1.Text = this.questions[currentQuestionIndex];

        //ShowResult.Text = (a.ToString());

    }
于 2013-09-11T13:24:12.917 に答える