我如何使添加到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
循环将继续运行。
如果这不是你要求的,请澄清。
答
如果您希望每次通过循环都更新文本,那么您总是可以删除当前字符串的第一行,然后将剩余的附加到(t + Environment.NewLine)。尽管如此,还是有很多字符串切割。如果你想要一个计数器,你可能还需要添加一个进度条。
如果这不是你要找的,那么我误解了你的问题。请澄清。
Tigran no我不想检查textBox1.Text是否为空或空。当IF条件为false时,我只想添加一次字符串变量t。如果你看到的话,那里有bool,如果它真的如果它真的会进入,它将不会执行任何操作,并且会将变量T添加到textBox1中。问题是这个t变量在while(true)循环中,一旦它被添加到textBox中,出于某种原因,它将会停留在那里,循环将继续向textBox添加变量t,而不是在文本框中查看例如stringt:“大家好”一次,我会看到它添加不间断。 – user1593871 2012-08-12 22:59:49
我需要以某种方式将t添加到文本框当布尔如果错误但只有一次!并保持循环继续。在这种情况下,因为它现在被卡在这个t变量行中并且不断添加t变量不间断的时间到textBox。 – user1593871 2012-08-12 23:00:50
修正了它。将尽快在问题中发布我的解决方案。谢谢你们。 – user1593871 2012-08-13 00:47:08