C# 向文本框或richtextbox添加文本(推送)?

C# 向文本框或richtextbox添加文本(推送)?,c#,textbox,chat,richtextbox,msn,C#,Textbox,Chat,Richtextbox,Msn,我正在尝试创建一个类似msn的聊天应用程序。当我执行“textBox.Text=textBox.Text+Text”时,它会更新文本框,并且我选择的文本不再被选中。在MSN中,您可以选择文本,但仍然可以接收不同颜色的消息等。。他们是怎么做到的?我想这有点像推送消息,也许他们会在另一个文本框下创建一个新的文本框?有什么线索吗 我希望你们知道我在说什么。我只想让我的文本像MSN过去一样,而不是更新整个文本框,只是在当前消息下推送一条新消息等等。如果我理解你的问题,你只想在将消息附加到RichText

我正在尝试创建一个类似msn的聊天应用程序。当我执行“textBox.Text=textBox.Text+Text”时,它会更新文本框,并且我选择的文本不再被选中。在MSN中,您可以选择文本,但仍然可以接收不同颜色的消息等。。他们是怎么做到的?我想这有点像推送消息,也许他们会在另一个文本框下创建一个新的文本框?有什么线索吗


我希望你们知道我在说什么。我只想让我的文本像MSN过去一样,而不是更新整个文本框,只是在当前消息下推送一条新消息等等。

如果我理解你的问题,你只想在将消息附加到RichTextBox时文本保持选中状态

int selectionStart = textBox.SelectionStart;
int selectionLength = textBox.SelectionLength;
int carat = textBox.TextLength;

textBox.Text += Environment.NewLine;
textBox.Text += newText;

//optional styling code for newly appended text
textBox.Select(carat, newText.Length);
textBox.SelectionColor = //value;
//etc.

//reapply original selection
if(selectionStart >= 0 && selectionLength > 0)
{
    textBox.Select(selectionStart, selectionLength);
}

你在用WPF吗?如果是这样的话,你应该在stackpanel上放置一个Scrollviewer,例如,每次收到新消息时都添加一个新的文本框。他们可能是从头开始写这些东西的。这不仅仅是一个文本框,你应该看到他问的这个问题,如果你使用的是Windows窗体或Windows Presentation Foundation哦,对不起。。Windows窗体。某种程度上,你发布的代码确实如此,我可以想象。但是文本框仍在更新,它不会在当前帖子下创建新帖子。我更新了代码。这就是你想要的吗?您可以根据需要在单独的消息中附加更多的换行符。如果出于某种原因,您不想将所有消息保存在同一个文本框中,并使用格式将它们分开显示,那么您需要为每条消息创建所有新的文本框。但是如果那样的话,请注意你的内存使用。谢谢,我会试试这个。