4

我一直在使用 C# 扩展 VS2008 中的 RichTextBox 控件(添加打印机支持和 URL 链接)。我有我需要的大部分功能,但控制不是很好。我不知道如何更改图像大小手柄的鼠标光标。子弹的大小和颜色不合时宜。对于不是 asp.net 或 wpf 的 winform,我需要这个。我更喜欢 rtf 到 html 所见即所得的编辑器。

大多数 Richtextbox 替代品要么是太旧的 .NET 1.0/1.1,要么太简单,要么太复杂和昂贵。

我正在使用 Infragistics 控件库,它们与 Richtextbox 最接近的控件并不能完全提供我想要的所有功能。他们确实提供了一个拼写检查控件,该控件可与基于文本的控件以及 std winforms 文本框和richtextbox 一起使用。它适用于任何实现 IProvideTextBox 或 ISupportSpellChecking 接口的控件。不幸的是,大多数功能丰富的文本框替换都提供了自己的拼写检查插件控件,这些控件不支持 IProvideTextBox 或 ISupportSpellChecking。我想用我的应用程序向用户分发 1 个标准字典而不是多个需要保持同步的用户。

另一件事是richtextbox 只是作为一个朴素的控件。您需要添加自己的菜单控件并自行连接。大多数昂贵的替代品都提供了一个已连接好的工具栏。这很好,但如果要为所有应用程序开发一致的外观和感觉,则必须删除供应商工具栏,因为现在有一组奇怪的菜单按钮,它们的外观和行为与我的 UI 的其余部分不同。此外,我正在使用应用程序样式器来皮肤我的应用程序。第三方菜单控件不太可能适应这种样式。

任何人都可以建议一个合理的 RichTextBox 控件替换,我可以使用它不会花费地球,在 winforms 中工作,支持 RTF,并且通过适当的鼠标悬停在图像大小句柄的转换和可靠的项目符号支持上是健壮的。

我目前的选择是缩减我的工作量,并删除对那些不能削减但仍会给我留下可用东西的功能的支持。

4

4 回答 4

1

如果你有一个支持它的操作系统,你可以随时尝试 Microsoft Inkedit Control(我遇到了 64 位 WS2008 和 Windows XP 的问题,但其余的都很好)。

InkEdit 继承自 RichTextBox,因此您可以:

        private System.Windows.Forms.RichTextBox richTextBox3;
        try
        {
            this.richTextBox3 = new Microsoft.Ink.InkEdit();
            Microsoft.Ink.InkEdit ie = (Microsoft.Ink.InkEdit)richTextBox3;
            // disable tablet-style ink mode
            ie.InkMode = Microsoft.Ink.InkMode.Disabled;
        }
        catch
        {
            \\ in case platform does not support inkedit control
            this.richTextBox3 = new RichTextBox();
        }

您需要添加对 Microsoft.Ink.dll 的引用,该引用(在我的机器上)位于:

C:\Program Files\Reference Assemblies\Microsoft\Tablet PC

除非您想使用此控件墨迹功能,否则在功能方面可能没有主要好处。但是,我注意到长文件(10x +)的加载文本比以前的 RichTextBox 快得多,而且滚动似乎也更流畅。

这似乎是未经宣传的,但 Visual Studio 2010 B1 也有一个更新的 RichTextBox 控件。

于 2009-09-11T21:37:36.587 回答
1

我们在这里使用DevExpress 富文本编辑器是我们非常满意的。价格不高,支持令人难以置信。

如果您想购买整个软件包,编辑器也可以嵌入到他们的网格中。

装饰器是指在选定文本上弹出的 Office 2007 工具栏吗?

于 2009-08-25T13:33:26.833 回答
1

虽然我没有丰富的RichTextBoxes 经验,但我过去在 DevExpress 控制套件方面取得了巨大成功(比 Infragistics 好得多,恕我直言)。我也知道他们在过去几个月发布了一个全新的 RTF 编辑器,所以我一定会看看。

于 2009-08-25T13:35:23.260 回答
0

我正在使用ScintillaNet,但它也以某种方式(非常)复杂。

于 2009-08-25T14:23:46.517 回答