【问题标题】:How to activate spellCheck in C# Windows Form Application?如何在 C# Windows 窗体应用程序中激活拼写检查?
【发布时间】:2014-07-13 02:16:53
【问题描述】:

我正在 Visual Studio 2012 中制作 C# Windows 窗体应用程序。我想添加一个具有拼写检查功能的文本框。你能解释一下它的过程吗?

【问题讨论】:

标签: c# winforms textbox spell-checking


【解决方案1】:

我知道旧链接,但 Buzzzzzz 是正确的。 WinForms 无法做到这一点,但创建一个 wpf 文本框或富文本框控件并将其添加到您的 WinForms 中确实很容易。找到那个该死的属性来告诉文本框进行拼写检查是骗人的,但很严重,

  1. 打开或创建一个新的 winforms 项目,
  2. 然后菜单项目添加新项目,
  3. 点击左侧的wpf,选择右侧的选择wpf控件 **闪烁,屏幕魔术,如果您不熟悉 WPF,您会看到奇怪的布局,
  4. 选择工具,
  5. 选择 wpf 文本框,拖放,BAM,如果您是新手,调整大小需要反复试验。
  6. 也添加对 WindowsBase、WindowsFormIntegration、UIAutomationProvider 的引用。
  7. 添加 PresentationCore 和 PresentationFramework 如果尚未添加,应该与添加新的一起出现。哦,也许 System.Xaml 但我认为它也是自动的。
  8. 保存并重建。

现在,您的工具箱中有一个控件,您可以随意命名。从工具箱中拖放控件即可。要与它交谈,默认值为 userControl1.TextBox.Text

哦,差点忘了。 Winforms 和 WPF 彼此之间并不是那么友好,如果出现红线曲线,您必须进行编译以删除它们。

【讨论】:

    【解决方案2】:

    没有 WinForms 功能。 但是,如果您想将其用作文本框,请创建一个 WPF UserControl 并将 WPF TextBox 放在那里。 启用拼写检查。 如果您拖放元素宿主一次,它将自动添加必要的引用,之后您将能够在工具箱中看到您的用户控件。 一旦用户控件可见,您所要做的就是拖放它,它会自动为您创建一个元素宿主并将 wpf 用户控件放入其中。

    【讨论】:

      【解决方案3】:

      如果您使用的是 .net4,您可以将 References System.XamlWindowsFormsIntegration 添加到您的 Winforms 项目中。

      这使您可以在您的工具箱中找到 ElementHost。通过使用 ElementHost,您可以在 Winfroms 项目中使用 WPF 对象。

      System.Windows.Forms.Integration.ElementHost elementHost1 = new System.Windows.Forms.Integration.ElementHost();
      System.Windows.Controls.TextBox textBox = new System.Windows.Controls.TextBox();
      textBox.SpellCheck.IsEnabled = true;
      elementHost1.Child = textBox;
      

      【讨论】:

      • 您必须将 ElementHost 控件添加到您的表单和另外 2 个参考:PresentationCore 和 PresentationFramework。
      【解决方案4】:

      Windows 窗体文本框没有内置的拼写检查功能。

      您可以做的最好的事情可能是在您的表单中嵌入一个 WPF 文本框。 Hans Passant 在this post 中就如何实现这一点给出了非常详尽的回答。

      【讨论】:

      • 这个问题是 4k 显示器支持。 WPF 和 winforms 不能很好地结合使用。我认为 WPF 更了解 DPI,我不确定,但我知道当我添加这个组件时,当调用该组件时,项目会大幅收缩(大约为原始的 25%)。我还没有解决方案。
      • @Rob 你有没有找到解决方案?我遇到了同样的问题。
      • @PhillipSchmidt 我添加了 Cspelling 库 - CodeProject 有一个链接。
      【解决方案5】:

      基本上,您只需将SpellCheck.IsEnabled 属性设置为“true”。像这样:

      TextBox textBox = new TextBox();
      textBox.SpellCheck.IsEnabled = true;
      

      您可以在System.Windows.Controls 命名空间中找到此属性,并像这样引用它:

      using System.Windows.Controls;
      

      社论:我强烈建议使用WPF 而不是Winforms,如果这是您可以探索的选项。 Winforms 曾经有过它的一天,但对于更现代的开发,WPF 是一个更强大的平台。

      【讨论】:

      • 如何获得“System.Windows.Controls.TextBox”。如何导入。输入“using.Windows.Controls ...”时它没有显示?
      • 感谢您的编辑和 WPF 建议。但是当我添加“使用 System.Windows.Controls;”这一行时它以红色下划线显示。我必须从任何地方引用它还是我做错了什么?
      • WinForms中没有这样的属性,在问题标题和标签中。此答案仅适用于 OP 在 WPF 中完全重写他/她的应用程序。
      • 它在 WPF 中正常工作。谢谢你。但是,如果我在 winforms 上明确地这样做,有什么选择。
      • @user3218743 - 请拒绝我的回答,因为我无法发布将 WPF 文本框嵌入您的 Winforms 应用程序的链接。 julealgon 下面的答案是更正确的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      • 2012-08-18
      • 2011-02-13
      • 1970-01-01
      • 2012-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多