【问题标题】:RichTextBox Replacement Winforms .NET2.0+RichTextBox 替换 Winforms .NET2.0+
【发布时间】:2010-11-22 15:09:19
【问题描述】:

我一直在使用 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,并且通过适当的鼠标悬停在图像大小手柄的转换和可靠的项目符号支持上是强大的。

我目前的选择是缩减我的工作量,并取消对那些无法削减但仍会给我留下可用的功能的支持。

【问题讨论】:

    标签: c# winforms richtextbox rtf


    【解决方案1】:

    我们在这里使用DevExpress Rich Text Editor 是我们非常满意的。价格不高,支撑力惊人。

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

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

    【讨论】:

    • 感谢我已经将 DevExpress 与 Delphi 一起使用。还可以。他们的 RichtextEditor 的唯一问题是您必须购买整套 winform 控件才能获得它。我对 Infragistics 非常满意,除了他们的 UltraFormatedTextEditor 需要更多的工作来满足我的要求。在文本编辑器之后,下一个最重要的控件是一个好的拼写检查器。听起来 Dev Express 文本编辑器可能与基础设施兼容。两者都声称可以使用 std winform 文本控件。在我们投资了 Infragistics 之后,切换控制库可能有点晚了。
    • 对于DevExpress,如果您购买完整包,您可以获得源代码。此时,如果您有兴趣,可以更新源代码以实现 ISupportSpellChecking 并调用 devexpress 自己的拼写检查引擎。 DevExpress 允许你重新编译他们的 DLL。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      只要你有一个支持它的操作系统,你总是可以尝试 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 控件。

      【讨论】:

        【解决方案4】:

        我使用的是ScintillaNet,但它在某些方面(非常)复杂。

        【讨论】:

        • 这看起来非常适合源代码编辑器。我认为它不适合替换richtextbox。我可能是错的,但这就是我得到的印象。我认为这对于脚本编辑器等其他应用程序开发工作非常有用。
        猜你喜欢
        • 1970-01-01
        • 2012-11-16
        • 2016-09-28
        • 2010-11-21
        • 1970-01-01
        • 1970-01-01
        • 2010-11-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多