C# 如何使添加到文本框的文本只添加一次,而不是一直添加,因为它处于循环中?
代码如下:C# 如何使添加到文本框的文本只添加一次,而不是一直添加,因为它处于循环中?,c#,C#,代码如下: private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; List<string> tempNamesAndTexts = new List<string>(); string tempDownload = downloadContent
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);
}
}
}
如果我要放一张票;或中断;它将不断地将变量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);
没有的循环将自然返回,因此while
循环将继续运行
如果这不是你想要的,请澄清 如果希望每次通过循环更新文本,则始终可以删除当前字符串的第一行,然后将剩余内容追加到(t+Environment.NewLine)中。不过,这是一个很大的割断。如果你想要一个计数器,你最好只添加一个进度条
如果这不是你想要的,那么我误解了你的问题。请澄清。Tigran否我不想检查textBox1.Text是空的还是空的。我只想在IF条件为false时添加字符串变量t一次。这里有bool,如果你看到它,如果它为真,它什么也不做,如果它为假,它将输入并将变量T添加到textBox1。问题是,这个t变量在while(true)循环中,一旦出于某种原因将它添加到文本框中,它就会卡在那里,并且循环会不断地将变量t添加到文本框中,因此在文本框中看到例如stringt:“Hi All”有一次我会看到它不停地添加。我需要在bool如果为false但只有一次时,以某种方式将t添加到文本框中!同时也让循环继续下去。在这种情况下,因为它现在卡在这个t变量行中,并不断添加t变量的不间断时间ot文本框。修复了它。我很快就会在这个问题上发表我的解决方案。谢谢大家。
if(string.IsNullOrEmpty(textBox1.Text)) //ADD NEW TEXT ONLY IF THERE IS NO ANY
BeginInvoke(new Action(() => textBox1.AppendText(t + Environment.NewLine)), null);