0

私はこのコードに、常に自分自身を呼び出す関数を持っています。backgroundworkerを使用していて、backgroundworker Doworkイベントで、ボタンをクリックしてプロセスを開始するだけで関数を最初に呼び出します。

この関数では、ラベル12とラベル10のTextプロパティを使用して2つの場所があります。ラベル12は悪いリンクを示し、ラベル10は良いリンクを示します。ボットはリアルタイムで動作しており、テキストはリアルタイムで変化しています。

この関数のどこで、ラベル3テキストを使用して、ラベル12とラベル10の両方を合計し、リンクの合計を表示できますか?

このような:

this.Invoke(new MethodInvoker(delegate { label3.Text = label12 + label10 }));

質問は次のとおりです。

  1. label12とlabel10の合計を計算して、label3が数値intを表示するようにするにはどうすればよいですか?

  2. このlabel3.Text行を関数のどこに配置すればよいですか?

これはコードです:

private List<string> test(string url, int levels,DoWorkEventArgs eve)
        {


            HtmlWeb hw = new HtmlWeb();
            List<string> webSites;
            List<string> csFiles = new List<string>();

            csFiles.Add("temp string to know that something is happening in level = " + levels.ToString());
            csFiles.Add("current site name in this level is : " + url);
            try
            {
                this.Invoke(new MethodInvoker(delegate { Texts(richTextBox1, "Loading The Url:   " , Color.Red); }));
                this.Invoke(new MethodInvoker(delegate { Texts(richTextBox1, url + "...",Color.Blue); }));
                HtmlAgilityPack.HtmlDocument doc = TimeOut.getHtmlDocumentWebClient(url, false, "", 0, "", "");

                this.Invoke(new MethodInvoker(delegate { Texts(richTextBox1, " Done " + Environment.NewLine, Color.Red); }));


                    currentCrawlingSite.Add(url);
                    webSites = getLinks(doc);
                    removeDupes(webSites);
                    removeDuplicates(webSites, currentCrawlingSite);
                    removeDuplicates(webSites, sitesToCrawl);
                    if (removeExt == true)
                    {
                        removeExternals(webSites);
                    }
                    if (downLoadImages == true)
                    {
                        webContent.retrieveImages(url);                    }
                    if (levels > 0)
                        sitesToCrawl.AddRange(webSites
                    this.Invoke(new MethodInvoker(delegate { label7.Text = sitesToCrawl.Count.ToString(); }));
                    this.Invoke(new MethodInvoker(delegate { label12.Text = currentCrawlingSite.Count.ToString(); }));


                    if (levels == 0)
                    {
                        return csFiles;
                    }
                    else
                    {


for (int i = 0; i < webSites.Count(); i++)//&& i < 20; i++)                         
                        { 


                            string t = webSites[i];
                            if ((t.StartsWith("http://") == true) || (t.StartsWith("https://") == true)) // replace this with future FilterJunkLinks function
                            {
                                csFiles.AddRange(test(t, levels - 1, eve));                                
                            }

                        }
                        return csFiles;
                    }



            }
            catch
            {
                failedUrls++;
                this.Invoke(new MethodInvoker(delegate { label10.Text = failedUrls.ToString(); }));
                this.Invoke(new MethodInvoker(delegate { Texts(richTextBox1, " Failed " + Environment.NewLine, Color.Green); }));
                return csFiles;
            }

        }
4

1 に答える 1

1

文字列を aLabelから数値に変換するには、次を使用します。

int number = Int32.Parse(someLabel);

したがって、コードは次のようになります。

label3.Text = (Int32.Parse(label12.Text) + Int32.Parse(label10.Text)).ToString();
于 2012-10-08T07:17:06.453 に答える