2012-04-20 9 views
1

プログラムを実行して2回目のタブを複数回クリックすると、x回だけラベルが作成され、一度...私は.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

いやうーんそれはローミングサービスは、私はそれに打撃を与えてみましょうになり、ありがとう – 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(); 
    } 
関連する問題