1

プログラムを実行して2番目のタブを複数回クリックすると、ラベルがx回作成され、xmlを1回だけ読み取る方法かどうかわからない... .closeメソッドを使用しようとしましたが、実行されませんでした私のために働いてください...どんな助けでもありがたいですありがとう

       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;
            }
        }
    }
4

2 に答える 2

2

別の関数でxml読み取りを実行します。すでにxmlを読んだかどうかを保存する変数を作成します。まだ呼び出されていない場合にのみ、xml読み取り関数を呼び出します。

于 2012-04-20T12:59:29.970 に答える
0

これは、コードが同じxmldocumentを複数回読み取るために発生するため、次のことを試してください。

   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();
   }
于 2012-04-20T13:12:38.987 に答える