首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#:即时消息(聊天)的Richtextbox

C#:即时消息(聊天)的Richtextbox
EN

Stack Overflow用户
提问于 2010-12-07 17:18:35
回答 2查看 2K关注 0票数 0

我想要我自己的即时消息(聊天)。普通文本框不支持格式化/彩色文本。我读了一些关于WPF中的Richtextbox的文章,其中包含块、段落和运行的新概念非常有趣。序列化这些对象并将它们发送到其他聊天客户端是个好主意吗?(文本应该格式化,就像作者的原始文本一样)如果我想将块从input-textbox添加到output-textbox (仅用于测试),我得到一个异常,块/段落被其他richtextbox使用。然后,我保存了这些对象的引用,将其从第一个文本框中删除,并将其添加到第二个文本框中。

代码语言:javascript
复制
 For example:


    FlowDocument oldTextDocument = richTextBoxMessageBox.Document;

            richTextBoxMessageBox.Document = new FlowDocument();

            while(oldTextDocument.Blocks.Count > 0)
            {
                richTextBoxChatHistory.Document.Blocks.Add(oldTextDocument.Blocks.FirstBlock);
            }

(我不能使用for-each来做这件事,因为这会导致异常。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-07 17:28:55

我不认为将序列化的对象发送给其他客户端是个好主意,因为它们会有一些(相当大的)开销。

前段时间我做了一个聊天应用程序,我(成功地)使用了WebBrowser作为聊天窗口中的主要控件(它支持许多格式、富媒体等),并且我只通过网络发送html文本(加密)。

关于你的代码,你不能在两个不同的控件中拥有相同的段落实例,因为它是一个ContentElement -你不能在两个不同的面板中拥有相同的标签。

票数 1
EN

Stack Overflow用户

发布于 2011-05-29 15:38:04

Richtextbox对我做的一个即时聊天应用程序来说就像是一个魅力,只要确保你研究了Flowdocument的行为并扩展了她的基类。所以你可以使用像属性改变的c.q这样的东西。依赖属性,以编写干净的代码。事实上,你在填写段落时必须小心,它必须在控制器中的属性上完成,而不是在表单背后的代码中完成。如果你想让你的代码保持整洁。只需看一下:http://www.lebroitsolutions.nl/en/projects-chat.aspx。你可以在那里下载代码,我已经提供了更多信息。流式传输一个流文档(而不是整个richtextbox )的开销是最小的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4375029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档