我有一个包含多个包含DevExpress拼写检查器的MemoEdit控件的应用程序。当用户更新选项时(通过MemoEdit的上下文菜单),我们将这些选项保存到我们的数据库中。是否有任何内置方法可以将这些新选项广播到应用程序中的所有拼写检查器?可能值得注意的是,一些MemoEdits用于VB6中的Interop控件" part"我们的申请。
现在我正在使用各种活动,但事情并没有像我希望的那样有效,而且在我深入研究自己的修复之前,我想我会问SO人。
提前感谢任何提示。
答案 0 :(得分:1)
我的技术主管和我刚刚获得开发订阅我们正在构建的win表单应用程序,我们正在使用拼写检查器并将选项保存到我们的sql server ce表中。我们有多个表单,其中一个拼写检查器每个表单与一个备忘录编辑控件绑定。 我编写了一个名为“GetSpellCheckerOptions”的可重复使用的函数,该函数返回类型“DevExpress.ExtraSpellChecker.OptionsSpelling”,它从我们的sql server ce表中加载来自拼写检查选项对话框表单的六个选项。此函数在表单的构造函数中调用,其中表单具有与之关联的拼写检查器组件,这可以是我们的应用程序中的任何表单。它是围绕“按需”构建的,而不是将其加载到内存中并在应用程序的生命周期内保留它,因为我们的用户编写的注释或注释位于加载,填充和关闭的表单上。 您可以使用名为OptionsChanged的事件,该事件是“DevExpress.ExtraSpellChecker.OptionsSpelling”类型的成员。您将使用您编写的子例程在运行时连接事件,例如:
jobsSpellChecker.OptionsSpelling.OptionChanged += new EventHandler(this.jobsSpellChecker_OptionChanged);
当用户更改拼写检查选项对话框中的选项时,此事件将触发,但是有一些问题需要注意。当事件触发时,您将不知道哪个选项触发了事件,因为事件参数不提供该信息。所以无论哪个选项被更改,我都保存为一个整体。单击“确定”按钮后进行保存,而不是每个选项被更改。最大的问题是这次事件发生了三次。这三次中的两次来自与改变选项完全无关的东西。因此,要控制两个不需要的事件触发,您需要一个if语句来评估选项表单对话框结果,例如,
if(jobsSpellChecker.FormsManager.OptionsForm.DialogResult == System.Windows.Forms.DialogResult.OK)
这将保护您的保存代码不会被不必要地执行。此外,没有“if”语句,控件有一种令人讨厌的方式来记住更改它们之前选项的先前状态,并且在三个事件触发中不需要的两个事件中,它将您的选项设置从新的所需设置更改回上一个状态或设置。非常烦人,它花了一整天时间来克服这些障碍,并且更多地尝试这些控制。希望这些信息可以为您或其他人提供一个可以节省时间,避免潜在挫折和无休止的浏览产品支持页面的价值。