我编写了一个聊天应用程序,除了导致我出现问题的 1 行代码外,它可以正常工作。
在我的 MainForm 中,我有:
ChatBox cb = new ChatBox(person);
this.AddOwnedForm(cb);
cb.Show();
这是显示我的聊天框,问题是这只能使用一次如果我尝试在我的聊天框线程中附加文本:
if (Ex.Message.Contains("chat ended"))
{
entryBox.Enabled = false;
send.Enabled = false;
if (displayBox.Enabled == true)
{
displayBox.AppendText("The User has left chat" + Environment.NewLine); // <- PROBLEM LINE OF CODE
displayBox.Enabled = false;
}
}
在未注释 appendtext 行的情况下,该程序将打开一个聊天框并正常关闭,但如果我尝试打开另一个,它将冻结。如果没有这行代码,应用程序可以正常工作。我相信这可能是线程未正确结束或类似问题的问题。
对此问题的任何帮助将不胜感激。如果我解释得不好,请询问并尝试做得更好。
编辑:
我尝试使用委托,但我仍然遇到同样的问题。
private void setDisplayBox(RichTextBox db)
{
if (this.InvokeRequired == false)
{
db.SelectionColor = Color.Red;
db.AppendText("The User has left chat" + Environment.NewLine);
}
else
{
SetDisplayBox setDb = new SetDisplayBox(setDisplayBox);
this.Invoke(setDb, new object[] { db });
}
}
这真的让我现在很难过:/。