2013-03-06 5 views
1

내가 잘못하고있는 것이 확실하지 않습니다. 내가 갖는 오류는 다음과 같습니다'xx'이름이 현재 컨텍스트에 존재하지 않습니다.

이름 '_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의 게시물을 도와 줄 수있는 사람에게 보상/인센티브를 줄 수 있으므로 효과를 얻을 수 있습니다.

감사합니다.

+1

button1_click (Form1.cs) 다음에}이 (가) 있습니다. –

+0

@AlinaB. 누락 된 부분을 추가하려고 시도했지만 빌드 오류가 발생했습니다. – user2141272

답변

4

멤버 및 메서드가 선언되지 않은 위치에서 액세스하려고합니다. 액세스하려는 메소드 및 멤버 (_questionsGetQuestions())는 Form1의 일부이며 FormChoose에 액세스하려고합니다. 이를 수행하는 유일한 방법은 Form1 개체에 대한 참조를 FormChoose에 두는 것입니다. 그리고 pathForm1에 있어야한다고 선언하는 곳을 실제로 볼 수 없습니다. CL4pTR4P의 대답에 추가

+0

어리석은 질문인데 용서해주세요.하지만 다른 형식의 개체에 대한 참조를 만들려면 어떻게해야합니까? "quiz.xml"경로를 변경하고 오류가 사라졌습니다. – user2141272

+0

몇 가지 방법이 있습니다. 먼저 [Classes] (http://msdn.microsoft.com/en-us/library/vstudio/x9afc042.aspx)에 대한 내용을 읽어 보시기 바랍니다. 그리고 당신이 이해하지 못하는 다른 것에 그 기사를 따르십시오. – MyCodeSucks

+1

폼간에 이러한 종류의 논리를 공유하면 확장 성 문제가 발생할 수 있습니다. 처음에는 질문에 대한 저장 및 저장을 정의하는 새로운 컨트롤러의 클래스에서 모든 저장 및 검색 결과를 캡슐화하는 방법을 살펴 보았습니다.개인 목록 속성과 공용 목록 GetQuestionsByDifficulty()가있는 새 정적 클래스를 만드는 경우 모든 양식이 컨트롤러 클래스에 액세스 할 수 있으며 데이터를 앞에로드하거나 필요에 따라로드 할 수 있습니다. –

1

,이 있습니다

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

을하지만, 경로 어디서나 이름 '경로'를 얻고있는 이유 코드에 선언되지 않은 존재하지 않습니다 현재 컨텍스트 -

Form1.cs를 당신은 그것을 선언하고 적절한 값이이 _questions 및 GetQuestions가 Form1을 선언하지 formChoose에있는 속성

+0

XDocument.Load ("quiz.xml")로 변경하고 오류가 사라졌습니다. 그 맞습니까? – user2141272

+0

어디에 quiz.xml이 있는지 모릅니다. 전체 경로를 원할 수도 있습니다. Load (@ "fullpath \ quiz.xml"); – NDJ

+0

quiz.xml은 다른 모든 .cs 및 .resx 파일이있는 폴더에 있습니다. – user2141272

0

로 설정해야합니다.

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(""); 
} 

범위에있을 때마다 질문 컨트롤러 메서드에 액세스 할 수 있어야합니다.

+0

LoadData 부분에 어떤 코드가 있는지 잘 모르겠습니다. 나는 많은 것을 묻는 것이 끔찍하다고 느끼지만 전에 이런 종류의 물건을 다루지 않았기 때문에 나는 정말로 붙어있다. 그래도 응답 해 주셔서 감사합니다. – user2141272

+0

내 혼란을 이해하는 데 도움이된다면 .zip에 코드가 있습니다. 내 프로젝트에서 내가 가진 마지막 주요 걸림돌이기 때문에 도움을 주시면 감사하겠습니다. – user2141272

+0

누군가가 이것에 추가하거나 도움이된다면 좋을 것입니다. 아마 내가 보상을 받으면 보상이 주어질 것입니다. – user2141272

관련 문제