DevExpress拼写检查器:是否有一种简单的(内置的)方式来传播拼写检查器选项更新



我有一个包含多个MemoEdit控件的应用程序,其中包含DevExpress拼写检查器。当用户更新Options(通过MemoEdit的上下文菜单)时,我们将这些选项保存到数据库中。是否有任何内置的方法将这些新选项广播给应用程序中的所有拼写检查器?值得注意的是,在我们的应用程序的VB6"部分"的互操作控件中使用了一些memoedit。

现在我正在使用事件,但是事情并没有像我希望的那样好,在我太深入地滚动我自己的修复之前,我想我应该问一下SO的人。

提前感谢您的提示

我的技术主管和我刚刚获得了dev express订阅,我们正在构建一个win forms应用程序,我们正在使用拼写检查器并将选项保存到我们的sql server ce表中。我们有多个表单,每个表单都有一个拼写检查器,每个表单绑定一个备忘录编辑控件。我编写了一个名为"GetSpellCheckerOptions"的可重用函数,它返回类型为"DevExpress.ExtraSpellChecker"。OptionsSpelling",从sql server ce表的拼写检查选项对话框表单中加载六个选项。这个函数在表单的构造函数中调用,其中表单有与之关联的拼写检查器组件,这可以是我们应用程序中的任何表单。它建立在"按需"的基础上,而不是将其加载到内存中并在应用程序的整个生命周期中保持它,因为我们的用户编写的注释或评论是在加载,填写和关闭的表单上。你可以使用名为OptionsChanged的事件,它是"DevExpress.ExtraSpellChecker.OptionsSpelling"类型的成员。您将在运行时使用像这样编写的子例程来连接事件,例如:

jobsSpellChecker.OptionsSpelling.OptionChanged += new EventHandler(this.jobsSpellChecker_OptionChanged);

当用户更改拼写检查选项对话框中的一个选项时,此事件将触发,但是有一些需要注意的问题。当事件触发时,您将不知道哪个选项触发了事件,因为事件参数没有提供该信息。所以我保存为一个完整的保存,不管哪个选项被改变了。保存发生在单击OK按钮之后,而不是每次更改选项之后。最大的问题是这个事件会触发三次。这三次中有两次是与改变选项完全无关的。因此,为了控制两个不需要的事件触发,您需要一个if语句来评估对话框结果中的选项,例如,

if(jobsSpellChecker.FormsManager.OptionsForm.DialogResult == System.Windows.Forms.DialogResult.OK)

这将保护您的保存代码免受不必要的执行。此外,如果没有"if"语句,控件就会以一种讨厌的方式记住在更改选项之前的状态,并且在那些不必要的三个事件触发期间,它会将您的选项设置从新的期望设置更改回以前的状态或设置。非常烦人,我花了整整一天的时间来克服这些障碍,并对这些控制进行了更多的试验。希望这些信息可以为您或其他人提供价值,从而节省时间,避免潜在的挫折和无休止地浏览产品支持页面。

最新更新