我如何使添加到textBox的文本只添加一次,而不是所有时间都在循环中?

问题描述:

这是代码:我如何使添加到textBox的文本只添加一次,而不是所有时间都在循环中?

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 
{ 
    BackgroundWorker worker = sender as BackgroundWorker; 
    List<string> tempNamesAndTexts = new List<string>(); 
    string tempDownload = downloadContent(); 
    GetProfileNames(tempDownload); 
    GetTextFromProfile(tempDownload); 
    for (int i = 0; i < names.Count; i++) 
    { 
     tempNamesAndTexts.Add(names[i] + " " + texts[i]);    
    } 
    if (InvokeRequired) 
    { 
     BeginInvoke(new Action(() => tempNamesAndTexts.ForEach(Item => textBox1.AppendText(Item + Environment.NewLine)))); 
    } 
    while (true) 
    { 
     namesAndTexts = new List<string>(); 
     if ((worker.CancellationPending == true)) 
     { 
      e.Cancel = true; 
      break; 
     } 
     else 
     { 
      string content = downloadContent(); 
      GetProfileNames(content); 
      GetTextFromProfile(content); 
      for (int i = 0; i < names.Count; i++) 
      { 
       namesAndTexts.Add(names[i] + " " + texts[i]); 
      } 
      if (InvokeRequired) 
      { 
       bool result = tempNamesAndTexts.SequenceEqual(namesAndTexts); 
       if (result == true) 
       { 
       } 
       else 
       { 
        var t = namesAndTexts.Last(); 

        if (textBox1.InvokeRequired) 
        { 
         BeginInvoke(new Action(() => textBox1.AppendText(t + Environment.NewLine)), null); 
         return; 
        } 
       } 
      } 
      reader.Close(); 
      response.Close(); 
      Thread.Sleep(30000); 
     } 
    } 
} 

的问题是在这条线:

BeginInvoke(new Action(() => textBox1.AppendText(t + Environment.NewLine)), null); 
            return; 

如果我将提出一个reutn;或打破;它会不断添加变量t不停地到文本框。我希望它只能添加一次。循环将继续,但变量t将只添加一次。

希望我很好地理解你的问题,它的声音,你只需要在

if(string.IsNullOrEmpty(textBox1.Text)) //ADD NEW TEXT ONLY IF THERE IS NO ANY 
    BeginInvoke(new Action(() => textBox1.AppendText(t + Environment.NewLine)), null); 

检查无return自然,所以while循环将继续运行。

如果这不是你要求的,请澄清。

+0

Tigran no我不想检查textBox1.Text是否为空或空。当IF条件为false时,我只想添加一次字符串变量t。如果你看到的话,那里有bool,如果它真的如果它真的会进入,它将不会执行任何操作,并且会将变量T添加到textBox1中。问题是这个t变量在while(true)循环中,一旦它被添加到textBox中,出于某种原因,它将会停留在那里,循环将继续向textBox添加变量t,而不是在文本框中查看例如stringt:“大家好”一次,我会看到它添加不间断。 – user1593871 2012-08-12 22:59:49

+0

我需要以某种方式将t添加到文本框当布尔如果错误但只有一次!并保持循环继续。在这种情况下,因为它现在被卡在这个t变量行中并且不断添加t变量不间断的时间到textBox。 – user1593871 2012-08-12 23:00:50

+0

修正了它。将尽快在问题中发布我的解决方案。谢谢你们。 – user1593871 2012-08-13 00:47:08

如果您希望每次通过循环都更新文本,那么您总是可以删除当前字符串的第一行,然后将剩余的附加到(t + Environment.NewLine)。尽管如此,还是有很多字符串切割。如果你想要一个计数器,你可能还需要添加一个进度条。

如果这不是你要找的,那么我误解了你的问题。请澄清。