2013-09-23 36 views
0

我正在尝试创建一个聊天应用程序,如msn。当我做“textBox.Text = textBox.Text +文本”它更新文本框,我选择的文本不再被选中。在MSN中,您可以选择文本并仍然收到不同颜色的邮件等。他们如何做?我想它像推送消息,也许他们在另一个文本框下创建一个新的文本框?任何线索?添加文本(推送)到文本框或richtextbox?

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

+1

您使用的是WPF吗? 如果是这样,你应该把一个Scrollviewer放在你的堆栈面板上,并且每次收到一条新消息时都要添加一个新的文本框。 – FloChanz

+0

他们可能从头写了所有的东西.. –

+0

它比一个文本框多很多,你应该看到这个问题http://stackoverflow.com/questions/8795738/using-richtextbox-as-a-chat-window-which - 显示文字有文字定制 – Habib

回答

0

如果我理解您的问题,您只希望文本在追加时保持选中状态消息发送到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); 
} 
+0

排序,你发布的代码确实无疑,我可以想像。但文本框仍然更新,它不会在当前帖子下创建新帖子。 – Tobias

+0

我更新了代码。那是你的追求?无论你想要什么,你都可以附加更多的换行符来分隔消息。如果由于某种原因,您不希望将所有邮件保留在同一文本框中并使用格式将它们分开显示,那么您需要为每封邮件创建所有新的文本框。但在这种情况下请记住你的内存使用情况 – user1100269

+0

谢谢,我会试试这个。 – Tobias