【问题标题】:.NET Spell Check control? [closed].NET 拼写检查控件? [关闭]
【发布时间】:2010-09-20 03:57:14
【问题描述】:

是否有任何具有拼写检查功能的 .NET 库(最好是自包含的文本编辑控件)。我想在我的应用程序的编辑区域中为拼写错误的单词添加典型的红色下划线。

编辑:澄清一下,这是针对 WinForms 的

【问题讨论】:

  • 这里是something,根据您的要求。 HTH。
  • “拼写错误”是否意味着讽刺? :)

标签: c# winforms spell-checking


【解决方案1】:

Aspell.Net 看起来不错,但似乎不再维护。我无法让它在我的机器上运行。

在 SourceForge 周围搜索后,我找到了 NHunspell,这是来自 OpenOffice.org 的拼写检查器的 .Net 端口。它提供了拼写检查、查找同义词和连字符的方法。它目前正在积极维护,并附带易于理解的示例代码。

用项目自己的话来说:

拼写检查、Hypenation 和 词库:NHunspell

NHunspell 是一个免费的开源拼写 .NET 框架的检查器。 C# 和 Visual Basic 示例代码可用 用于拼写检查、断字和 通过词库查找同义词。

NHunspell 基于 Hunspell 和 带来开放式办公室拼写检查, 断字和词库 Microsoft® .NE​​T 框架。 NHunspell 是一个 .NET (C#, VB) 库并包装 原生库 Hunspell、Hyphen 和 MyThes。

集成库用于 OpenOffice 并使用 出版的词典 OpenOffice.org。许可证

NHunspell 获得以下许可: GPL/LGPL/MPL。商业免费使用 应用程序被允许根据 LGPL 和 MPL 许可证。您的 商业应用可以链接 针对 NHunspell DLL。

NHunspell

【讨论】:

    【解决方案2】:

    不是红线控件,而是:Aspell.Net 是一个免费和开源的 .Net 拼写检查组件。 Aspell.Net 基于 GNU Aspell 项目,是可用的最强大的多语言拼写引擎之一。该 API 是用 C# 编写的,并通过围绕 Aspell 的 C API 的 Win32 端口的 C++ 包装器进行通信。

    sourceforge 的源代码库,2010 年 2 月检查(Tahnks,@magnifico)。

    2012 年 5 月,来源无法再访问...抱歉。

    【讨论】:

    【解决方案3】:

    NHunspellTextBoxExtender,由William Winner 创作的作品。添加到项目后,可用于扩展文本框和富文本框(任何继承 TextBoxBase 的控件)。源代码也包含在内。

    http://www.codeproject.com/KB/recipes/NHunspellExtenderProvider.aspx

    【讨论】:

      【解决方案4】:

      你没有提到这是用于基于网络的使用还是桌面应用程序,但我过去使用过 netSpell 并取得了很好的成功。

      【讨论】:

        【解决方案5】:

        RapidSpell 非常适合我 http://keyoti.com

        【讨论】:

          【解决方案6】:

          Telerik 有一个针对 ASP.NET 的控件。

          【讨论】:

            【解决方案7】:

            ****** Windows App-您可以自定义自己的文本框控件,无需第三方软件******

            1-首先在解决方案资源管理器中打开您的应用程序“属性”,在“应用程序”选项卡下确保“目标框架”设置为“.Net Framework 4”,而不是“.Net Framework 4 Client Profile”。

            2-秒在解决方案资源管理器中右键单击您的应用程序并选择“添加引用...”。选择“.NET”选项卡,然后按住控制键并选择“WindowsFormsIntegration”、“System.Design”、“PresentationCore”、“PresentationFramework”、“WindowsBase”、“System.Xaml”,然后单击“确定”。

            3-第三次在解决方案资源管理器中右键单击您的应用程序,然后选择“添加”->“类”。创建一个新类,您可以将其命名为任何您喜欢的名称。打开刚刚创建的类的代码并删除代码,而不是文件。

            4-Forth 将以下代码复制并粘贴到您刚刚创建的类文件中。

            using System;
            using System.ComponentModel;
            using System.Windows;
            using System.Windows.Controls;
            using System.Windows.Forms.Integration;
            using System.Windows.Forms.Design;
            
            [Designer(typeof(ControlDesigner))]
            class SpellCheckTextbox: ElementHost
            {
                private TextBox box;
            
                public SpellCheckTextbox()
                {
                    box = new TextBox();
                    base.Child = box;
                    box.TextChanged += (sender, e) => OnTextChanged(EventArgs.Empty);
                    box.SpellCheck.IsEnabled = true;
                    box.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden;
                    this.Size = new System.Drawing.Size(100, 200);
                }
                public override string Text
                {
                    get { return box.Text; }
                    set { box.Text = value; }
                }
            
                [DefaultValue(true)]
                public bool Multiline
                {
                    get { return box.AcceptsReturn; }
                    set { box.AcceptsReturn = value; }
                }
            
                [DefaultValue(false)]
                public bool ScrollBars
                {
                    get 
                    {
                        if (box.VerticalScrollBarVisibility == ScrollBarVisibility.Visible ||
                            box.HorizontalScrollBarVisibility == ScrollBarVisibility.Visible)
                        {
                            return true;
                        }
                        else 
                        {
                            return false;
                        }
            
                    }
                    set 
                    {
                        if (value)
                        {
                            box.VerticalScrollBarVisibility = ScrollBarVisibility.Visible;
                            box.HorizontalScrollBarVisibility = ScrollBarVisibility.Visible;
                        }
                        else
                        {
                            box.VerticalScrollBarVisibility = ScrollBarVisibility.Hidden;
                            box.HorizontalScrollBarVisibility = ScrollBarVisibility.Hidden;
                        }
            
                    }
                }
            
                [DefaultValue(false)]
                public bool WordWrap
                {
                    get { return box.TextWrapping != TextWrapping.NoWrap; }
                    set { box.TextWrapping = value ? TextWrapping.Wrap : TextWrapping.NoWrap; }
                }
            
                [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
                public new System.Windows.UIElement Child
                {
                    get { return base.Child; }
                    set { /* Do nothing to solve a problem with the serializer !! */ }
                }
            
            }
            

            5- 第五,最后一步,编译代码,然后将位于设计视图中“工具箱”顶部的新控件“SpellCheckTextbox”拖放到您的表单上。

            【讨论】:

            • 如果不将它添加到构造函数框中,我无法让 Multiline 工作。AcceptsTab = true; box.AcceptsReturn = true;
            • 看起来效果不错!感谢分享。它是如何工作的?它是否以 Winforms 形式托管 WPF 文本框?
            • 基本上就是这样,
            【解决方案8】:

            可以在客户端或服务器端使用基于 WPF 文本框的免费 .NET 拼写检查器here

            完全公开...当然是在堆栈溢出的帮助下真正由您编写的 :)

            【讨论】:

            • 代码看起来不错,但是即使 SpellCheckTextBox 扩展了 TextBox,您的组件也不会出现在 ToolBox 中。我认为这是一个仅限 XAML 的组件,不是为在 WinForms 上工作而设计的?
            • 这不是可视组件。我写它是为了在服务器上运行。您使用要检查拼写的文本调用它,它会返回拼写错误位置以及建议。如果您添加正确的程序集引用,它将在 winforms 下运行。它基本上是一个 hack,利用 wpf 文本框来获取底层的拼写检查控件。文本框永远不会出现在屏幕上。
            • 感谢您的澄清。对于您指定的方法和目的,代码很好,很高兴在 GitHub 上看到一些“干净”的更改。如果我可以建议,您能否添加一个 WinForms 控件示例,该示例具有类似于 Steve 的托管控件的红线支持。
            • 是的,这不会发生,原因有两个:我不了解 WinForms,其次我个人认为,现在任何不针对 Web 或云的东西都是浪费时间. Winforms 将在几年内与 WPF 一起消失。 (真的很遗憾,我很擅长 WPF) 当您看到 Micorosoft 对这些技术的关注时,很容易看到写作是在墙上。我会对做一个 JavaScript 控件更感兴趣。如果我要这样做,我不会扩展此代码,我会构建一个使用它的单独项目。随意这样做:)
            • 感谢您澄清原因。个人想法,在 Horizo​​n 上使用 Windows 10 for android/etc 设备,以及他们为重写图形层付出的额外努力,再加上对 Visual Studio 或 iis 的 Web 开发部分缺乏任何真正的关注,我不知道不要相信一切都将完全以“云”为中心。我看到了更多的混合解决方案——至少直到操作系统只是一个没有任何其他层的网络浏览器的那一天。
            【解决方案9】:

            Infragistics 有一个spell checker control 可以对任何控件进行拼写检查。 我自己没用过,你可以免费下载试用版。

            【讨论】:

              【解决方案10】:

              组件一提供了一个组件,它只在您键入时执行此操作。我用它,速度非常快。

              更多信息请见here

              【讨论】:

                【解决方案11】:

                FCKEditor 是一个不错的文本编辑器(基于网络)。它具有拼写检查功能。

                【讨论】:

                  猜你喜欢
                  • 2011-03-17
                  • 2012-04-18
                  • 1970-01-01
                  • 2010-09-07
                  • 1970-01-01
                  • 2012-06-07
                  • 2013-08-19
                  • 2010-10-26
                  • 1970-01-01
                  相关资源
                  最近更新 更多