我有两个if-else
条件,这将在Windows Forms
文本框上显示一些文本。此文本框从除UI线程以外的其他线程设置文本。防止文本框覆盖以前的数据
语境:
delegate void SetTextCallback(string text);
private void SetText(string text)
{
if (this.txtMessages.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.txtMessages.Text = text;
}
}
private void setTextFunc()
{
if(this condition is true)
{
setText("Hello from text 1" + Environment.NewLine);
}
else
{
setText("Hello from text 2" + Environment.NewLine);
}
}
现在的问题是,当Hello from text 2
文字被显示出来,它覆盖的第一个文本。我希望它下面并保留第一个文本。 我该如何做到这一点?
我想过使用清单收集像这样:
List<string> listOfStrings = new List<string>();
listOfStrings.Add("Hello from text 1");
listOfStrings.Add("Hello from text 2");
然后通过这个名单收集迭代。会这样吗?
foreach(string x in listOfStrings)
{
MessageBox.Show(x);
}
有什么建议吗?我考虑了一个RichTextBox
,但由于我不会在运行时编辑文本,所以我认为不需要它。
可能你会使用'RichTextBox'?或者打开'TextBox'上的'Multiline'并使用'+ =' –