2012-04-20 4 views
1

프로그램을 실행하고 두 번째 탭을 여러 번 클릭하면 레이블이 x 번 생성되고 im은 XML 만 읽는 것으로 분류됩니다. 한 번 ... 나는 .close 방법을 사용하여 시도하지만 다른 기능 읽기 XML을 수행 ... 어떤 도움을 주시면 감사하겠습니다 날 위해 일하는 당신에게xml 파일을 읽을 때 요소의 복제본을 읽습니다.

 private void tabPage2_Enter(object sender, EventArgs e) 
     { 

     if (tabControl1.SelectedTab == tabPage2) 
     { 


      XmlDocument xmlDoc = new XmlDocument(); 
      xmlDoc.Load("xmldoc.xml"); 
      foreach (XmlNode node in xmlDoc.SelectNodes("check/tick/mark")) 
      { 

       Label l = new Label(); 
       System.Drawing.Point l1 = new System.Drawing.Point(65, 48 + a); 
       l.Location = l1; 
       l.Text = node.SelectSingleNode("score").InnerText; 
       tabPage2.Controls.Add(l); 
       a += 25; 
      } 
     } 
    } 

답변

2

감사하지 않았다. 이미 XML을 읽었는지 여부를 저장하는 변수를 만듭니다. 아직 호출되지 않은 경우에만 xml 읽기 함수를 호출하십시오.

+0

흠 참으로 그 sence 날 그것에게 기회를 제공 할 수 있습니다, 고맙습니다 – Hashey100

0

이 코드가 그렇게하려고 여러 번 같은 XMLDocument로 읽어 beacuse 발생합니다

bool read = false; 

    void ReadXmDocument() 
    { 
     using(XmlDocument xmlDoc = new XmlDocument()) 
     { 
      xmlDoc.Load("xmldoc.xml"); 
      foreach (XmlNode node in xmlDoc.SelectNodes("check/tick/mark")) 
      { 
       Label l = new Label(); 
       System.Drawing.Point l1 = new System.Drawing.Point(65, 48 + a); 
       l.Location = l1; 
       l.Text = node.SelectSingleNode("score").InnerText; 
       tabPage2.Controls.Add(l); 
       a += 25; 
      } 

      read = true; 
     } 
    } 

    private void tabPage2_Enter(object sender, EventArgs e) 
    { 
     if(tabControl1.SelectedTab == tabPage2 && read == false) ReadXmlDocument(); 
    } 
관련 문제