1

不太确定我做错了什么。我得到的错误是:

当前上下文中不存在名称“_questions”-FormChoose.cs

代码:

表单选择.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

您正在尝试从未声明的位置访问成员和方法。您尝试访问的方法和成员(_questionsGetQuestions())是 的一部分Form1,并且您尝试在 中访问它们FormChoose。做到这一点的唯一方法是Form1引用FormChoose. 而且我并没有真正看到您声明path应该在的任何地方Form1

于 2013-03-06T20:07:58.320 回答
1

除了 CL4pTR4P 的答案,你还有这个:

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

但路径未在您的代码中的任何地方声明,这就是为什么您在当前上下文中不存在名称“路径”-Form1.cs

您需要声明它并将其设置为合适的值

于 2013-03-06T20:11:15.833 回答
0

_questions 和 GetQuestions 属性在 Form1 中声明,而不是在 formChoose 中。

于 2013-03-06T20:25:35.610 回答
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 回答