C# winforms 中聊天应用程序的 Richtextbox 替代方案

Richtextbox alternative for Chat application in c# winforms

我正在开发一个聊天应用程序项目,用户通过 TCP/IP 套接字相互通信,工作正常。聊天室中的人可以共享文件、图像,当然还有纯文本。我正在使用 RichTextBox 向客户显示消息和图像。

关于 RichTextBox 的观察如下:

所以我的问题是,实现我的目标的更好方法是什么?

您真的需要在聊天应用程序中完成 RichTextEditing 吗?在我看来,聊天应该由一种字体样式等组成。以及为什么例如有人应该将文本布局为中心或某事。我会简单地构建一个容器(用户控件、面板等),您可以在其中为 text/pictures 添加标签或图片编辑。因此,您为每条消息添加标签,为每张图片添加图片编辑。因此,您可以像 WhatsApp 或其他常见的 Messenger 一样从上到下流动。

如果您真的需要完整的 RichTextEditing 功能,我仍然会将图像与文本部分分开并按上述方式构建。你现在使用许多只读的富文本编辑而不是标签。图片也显示在图片编辑中。

优点是您不会变得又大又笨的 richtextedits,因为您将图像分开了。此外,您将成为一个消息流,显示在从上到下排序的不同框中,其中底部是最新的。例如,这使您有机会只显示最后 10 条消息。如果用户想看更多,你必须重新加载旧帖子。所以你总是只显示 10 条(或任何你想要的)消息,这将使内存占用很小。

此外,如果图像太大或只允许固定大小,您可以压缩图像。所以没有人会用高分辨率图像减慢您的聊天速度。

在没有第三方控件的情况下,我认为到目前为止您没有 richtext 的替代品,您需要所有这些编辑功能。如果你只需要显示格式化的东西,你可以尝试 WebBrowser-Control 并将你的 rtf 转换为 html。但是不知道这样算不算轻量级

提示:确保释放不再需要的 RichTextEdits。

这里有一个 link,它描述了如何在 Winforms 应用程序中托管 WPF 控件。不要认为这会给您带来任何优势,但如果您想尝试一下,那就去吧 ;)。

希望对您有所帮助。