将大型CustomDictionary添加到RichTextBox的SpellCheck

时间:2014-03-07 08:27:24

标签: c# wpf spell-checking

我的WPF应用程序中有RichTextBox。它显示一个文档,可以在ListBox中选择。选择RichTextBox.Document后,就像那样:

rtb.Document = SelectedDocument;

现在我需要启用SpellCheck。我需要添加CustomDictionary,因为标准拼写检查不支持俄语。我找到了.lex格式的真正的大俄语词典(~60 Mb)并试图在应用程序开始时将其添加到SpellCheck:

rtb.SpellCheck.CustomDictionaries.Add(new Uri(@"pack://application:,,,/Dictionaries/Russian.lex"));

启动时间增加了5-7秒,但没关系。 SpellCheck每次文件更改时加载该字典的主要问题。每次切换文件现在需要5-7秒。它不依赖于文档,我只用一个符号来尝试文档 如果我正在尝试更改文档的内容(清除Document.Blocks并填充新内容),那么所有内容都可以在没有长时间加载的情况下工作。但在这种情况下,我正在丢失文本中的图像以及xaml与textbox和viewmodel之间的连接 有没有办法在每次文档更改时禁止加载字典,或者更容易忘记标准拼写检查并查找/编写另一个?

2 个答案:

答案 0 :(得分:1)

看起来你有太多的临时词典。

  1. 打开注册编辑器( REGEDIT.EXE
  2. 转到 " HKEY_CURRENT_USER \ Software \ Microsoft \ Spelling \ Dictionaries"
  3. 打开 全局 并删除包含临时词典的行。只留下Office字典。检查对临时词典的其他引用
  4. "%USER%\ AppData \ Local \ Temp"
  5. 中删除这些词典

    如果您更改字典并尝试将其添加到SpellChecker,您可能会在临时文件夹和注册表中看到字典的两个版本。

    更多信息here

答案 1 :(得分:0)

在切换文档内容之前,您是否尝试禁用拼写检查程序?

 rtb.SpellCheck.IsEnabled = false;

完成加载文档后,请尝试重新启用它。

希望这有帮助。