1

私が間違っていることはよくわかりません。私が得ているエラーは次のとおりです。

名前 '_questions' は現在のコンテキストに存在しません - FormChoose.cs

コード:

FormChoose.cs

using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml.Linq;
using System.Xml.Serialization;

namespace WindowsFormsApplication1
{
    public partial class FormChoose : Form
    {
        public FormChoose()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            _questions = GetQuestions("1");
        }
    }
}

Form1.cs

using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml.Linq;
using System.Xml.Serialization;

これを達成する方法についての意見や回答は大歓迎です。ltn の投稿を手伝ってくれた人に報酬/インセンティブを提供して、私がそれを機能させることができるようにします。

ありがとうございました。

4

4 に答える 4

4

宣言されていない場所からメンバーとメソッドにアクセスしようとしています。アクセスしようとしているメソッドとメンバー (_questionsおよびGetQuestions()) は の一部でありForm1、 でそれらにアクセスしようとしていますFormChooseForm1これを行う唯一の方法は、 内のオブジェクトへの参照を持つことですFormChoosepathそして、私はあなたが何をすべきかを宣言している場所を実際にはどこにも見ていませんForm1

于 2013-03-06T20:07:58.320 に答える
1

CL4pTR4P からの回答に加えて、次のものがあります。

private List<Question> GetQuestions(string difficulty)
{
    var quiz = XDocument.Load(path);

The name 'path' does not exist in the current context - Form1.cs を取得しているのは、コードのどこにも path が宣言されていないためです。

それを宣言し、適切な値に設定する必要があります

于 2013-03-06T20:11:15.833 に答える
0

1 - 質問リポジトリを配置する新しいクラスを作成します。

namespace WindowsFormsApplication1
{
    public class QuestionController
    {
        private static List<Question> _questions = new List<Question>();

        public static void LoadData(string path)
        {
            //Load Data from path->_questions
        }

        public static List<Question> GetQuestionsByDifficulty(int difficulty)
        {
            return _questions.Where(p => p.Difficulty == difficulty).ToList();
        }
    }
}

2 - アプリケーションの起動コードでリポジトリをロードします。あなたの場合:

public Form1()
{
    InitializeComponent();
    QuestionController.LoadData("");
}

スコープ内にあるときはいつでも、質問コントローラーのメソッドにアクセスできる必要があります。

于 2013-03-06T21:27:58.893 に答える
0

属性 _questions および GetQuestions は、formChoose ではなく Form1 で宣言されています。

于 2013-03-06T20:25:35.610 に答える