WPF:在只读文本框上使用拼写检查

Posted

技术标签:

【中文标题】WPF:在只读文本框上使用拼写检查【英文标题】:WPF: Use SpellCheck On Read-Only TextBox 【发布时间】:2010-11-11 07:10:51 【问题描述】:

我希望在单词拼写错误的地方显示带有波浪形红线的文本,但我只希望文本是可选择的,而不是可编辑的。如果我将 TextBox 的 IsReadOnly 属性设置为 True 或 IsEnabled 设置为 False,波浪形的红线就会消失,我无法通过放置透明的东西来绕过它,因为这会阻止用户选择文本的各个部分。

无论如何我可以保留红线,允许文本可选择但防止实际文本被修改?

谢谢

【问题讨论】:

【参考方案1】:

您可以连接到文本框的文本更改事件,然后拒绝新文本。它将具有与只读相同的效果,而不会使文本框变灰或摆脱拼写检查。

【讨论】:

【参考方案2】:

谢谢大卫。我目前正在研究 2 种可能的解决方案,您的解决方案和以下解决方案:

我创建了一个基于标准 TextBox 的自定义控件,但在这个庄园中实际上有 2 个文本框彼此叠放:

<TextBox Name="tbxBack" 
         Foreground="Transparent"
         SpellCheck.IsEnabled="True"
         TextWrapping="Wrap" 
         SnapsToDevicePixels="True"/>
<TextBox Name="tbxFront" 
         Background="Transparent"
         TextWrapping="Wrap" 
         SnapsToDevicePixels="True" 
         IsReadOnly="True"/>

我认为这里发生的事情非常简单,但我担心这会导致潜在的开销。

我正在研究双 TextBox 解决方案的原因是我担心如果我尝试取消该事件,它可能会在文本更改时在控件中出现某种闪烁。

【讨论】:

以上是关于WPF:在只读文本框上使用拼写检查的主要内容,如果未能解决你的问题,请参考以下文章

WPF RichTextBox 拼写检查 ComException

MindManager中的拼写检查功能如何用

如何在 iPhone 上禁用文本输入的拼写检查器

使用拼写检查提高Tesseract OCR准确性

在 Swift 5 中使用 UITextChecker 对希伯来文文本进行拼写检查

如何在 eclipse c/c++ 版本中检查纯文本文件的拼写?