我想要我自己的即时消息(聊天)。普通文本框不支持格式化/彩色文本。我读了一些关于WPF中的Richtextbox的文章,其中包含块、段落和运行的新概念非常有趣。序列化这些对象并将它们发送到其他聊天客户端是个好主意吗?(文本应该格式化,就像作者的原始文本一样)如果我想将块从input-textbox添加到output-textbox (仅用于测试),我得到一个异常,块/段落被其他richtextbox使用。然后,我保存了这些对象的引用,将其从第一个文本框中删除,并将其添加到第二个文本框中。
For example:
FlowDocument oldTextDocument = richTextBoxMessageBox.Document;
richTextBoxMessageBox.Document = new FlowDocument();
while(oldTextDocument.Blocks.Count > 0)
{
richTextBoxChatHistory.Document.Blocks.Add(oldTextDocument.Blocks.FirstBlock);
}(我不能使用for-each来做这件事,因为这会导致异常。)
发布于 2010-12-07 17:28:55
我不认为将序列化的对象发送给其他客户端是个好主意,因为它们会有一些(相当大的)开销。
前段时间我做了一个聊天应用程序,我(成功地)使用了WebBrowser作为聊天窗口中的主要控件(它支持许多格式、富媒体等),并且我只通过网络发送html文本(加密)。
关于你的代码,你不能在两个不同的控件中拥有相同的段落实例,因为它是一个ContentElement -你不能在两个不同的面板中拥有相同的标签。
发布于 2011-05-29 15:38:04
Richtextbox对我做的一个即时聊天应用程序来说就像是一个魅力,只要确保你研究了Flowdocument的行为并扩展了她的基类。所以你可以使用像属性改变的c.q这样的东西。依赖属性,以编写干净的代码。事实上,你在填写段落时必须小心,它必须在控制器中的属性上完成,而不是在表单背后的代码中完成。如果你想让你的代码保持整洁。只需看一下:http://www.lebroitsolutions.nl/en/projects-chat.aspx。你可以在那里下载代码,我已经提供了更多信息。流式传输一个流文档(而不是整个richtextbox )的开销是最小的。
https://stackoverflow.com/questions/4375029
复制相似问题