尝试使用 C# SpellCheck 类
我正在尝试使用 C# 提供的 SpellCheck 类(在PresentationFramework.dll 中)。 但是,在尝试将拼写绑定到文本框时,我遇到了问题:
SpellCheck.SetIsEnabled(txtWhatever, true);
问题是我的 txtWhatever 属于 System.Windows.Forms 类型,而该函数正在查找的参数是 System.Windows.Controls,并且简单的转换失败。 我也尝试制作这种类型的文本框,但是......不能。 有谁知道如何使用这个 SpellCheck 对象? (MSDN 没有那么有帮助...)
谢谢
I am trying to use the SpellCheck class C# provides (in PresentationFramework.dll).
But, I am experiencing problems when trying to bind the spelling to my textbox:
SpellCheck.SetIsEnabled(txtWhatever, true);
The problem is that my txtWhatever is of type System.Windows.Forms and the parameter this function is looking for is System.Windows.Controls, and simple converting failed.
I also tried to make my TextBox of this type, but... couldn't.
Does anyone know how to use this SpellCheck object?
(MSDN wasn't that helpful...)
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
您必须使用 WPF TextBox 才能进行拼写检查。您可以使用 ElementHost 控件将其嵌入到 Windows 窗体窗体中。它的工作原理与 UserControl 非常相似。这是一个可以直接从工具箱中删除的控件。首先,您需要“项目”+“添加引用”并选择“WindowsFormsIntegration”、“System.Design”和 WPF 程序集“PresentationCore”、“PresentationFramework”和“WindowsBase”。
将新类添加到您的项目中并粘贴下面所示的代码。编译。将 SpellBox 控件从工具箱顶部拖放到窗体上。它支持 TextChanged 事件以及 Multiline 和 WordWrap 属性。字体存在一个棘手的问题,没有简单的方法将 WF 字体映射到 WPF 字体属性。最简单的解决方法是将表单的字体设置为“Segoe UI”,这是 WPF 的默认字体。
根据大众的需求,此代码的 VB.NET 版本避免了 lambda:
You have to use a WPF TextBox to make spell checking work. You can embed one in a Windows Forms form with the ElementHost control. It works pretty similar to a UserControl. Here's a control that you can drop straight from the toolbox. To get started, you need Project + Add Reference and select WindowsFormsIntegration, System.Design and the WPF assemblies PresentationCore, PresentationFramework and WindowsBase.
Add a new class to your project and paste the code shown below. Compile. Drop the SpellBox control from the top of the toolbox onto a form. It supports the TextChanged event and the Multiline and WordWrap properties. There's a nagging problem with the Font, there is no easy way to map a WF Font to the WPF font properties. The easiest workaround for that is to set the form's Font to "Segoe UI", the default for WPF.
By popular demand, a VB.NET version of this code that avoids the lambda:
您是否尝试过在尝试拼写检查的实际文本框中设置属性。例如
Have you tried just setting the property on the actual TextBox your attempting to spellcheck. e.g.
您正在尝试在 WinForms 应用程序上使用专为 WPF 设计的拼写检查组件。他们不相容。
如果您想使用 .NET 提供的拼写检查,则必须使用 WPF 作为您的小部件系统。
如果您想坚持使用 WinForms,则需要第三方拼写检查组件。
You're trying to use a spell-check component designed for WPF on a WinForms application. They're incompatible.
If you want to use the .NET-provided spell check, you'll have to use WPF as your widget system.
If you want to stick with WinForms, you'll need a third-party spell check component.
此处可以看到基于 WPF 文本框的免费 .NET 拼写检查器,可以在客户端或服务器端使用。它将为您包装文本框,尽管您仍然需要将程序集包含到演示框架等。
完全公开...由您真正编写
Free .NET spell checker based around a WPF text box that can be used client or server side can be seen here. It will wrap the text box for you although you still need the assembly includes to Presentation framework etc.
Full disclosure...written by yours truly
我需要向 winforms 中的文本框添加背景颜色,以反映设计器中选择的颜色:
I needed to add a background colour to the textbox in winforms that reflected the colour selected in the designer:
如果你想启用 TextChanged 事件,请编写如下代码。
If you want to enable the TextChanged Event write the code like this.
获取英语单词列表并将其复制到文本文件怎么样?添加参考。然后使用 StreamReader 类根据 textbox.text 分析列表。文本文件中找不到的任何单词都可以设置为突出显示或显示在对话框中,并提供替换或忽略的选项。这是一个霰弹枪建议,有很多缺失的步骤,我已经编程了 2 个月了,但是……无论如何,这就是我要尝试的。我正在制作一个记事本项目(idreamincode.com 上的 rexpad)。希望这有帮助!
what about getting a list of words in the english language and copying that to a text file. add the reference. then use streamreader class to analyze the list against textbox.text. any words not found in the text file could be set to be highlighted or displayed in a dialog box with options to replace or ignore. this is a shotgun suggestion with many missing steps and i am 2 months into programming but....its what im going to attempt anyway. i am making a notepad project (rexpad on idreamincode.com). hope this helped!