DevExpress Spell Checker: Существует ли простой (встроенный) способ распространения обновлений параметров проверки орфографии?

1

У меня есть приложение, содержащее несколько элементов управления MemoEdit, содержащих средства проверки правописания DevExpress. Когда пользователь обновляет параметры (через контекстное меню MemoEdit), мы сохраняем эти параметры в нашем db. Есть ли встроенный способ трансляции этих новых параметров во все проверки орфографии в приложении? Возможно, стоит отметить, что некоторые элементы MemoEdits используются в элементах управления Interop в части VB6 нашего приложения.

Прямо сейчас я использую события, но все не так хорошо, как я надеялся, и прежде чем я слишком глубоко закрою свое собственное решение, я подумал, что я попрошу SO людей.

Заранее благодарим за любые советы.

Теги:
winforms
devexpress
spell-checking

1 ответ

1
Лучший ответ

Мой технический руководитель, и я только что приобрел dev express подписку на приложение форм выигрышей, которое мы создаем, и мы используем проверку орфографии и сохраняем параметры для нашей таблицы 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" элемент управления имеет неприятный способ запомнить предыдущее состояние того, какие параметры были перед тем, как вы их изменили, и во время этих ненужных двух из трех пожаров событий, он изменяет настройки параметров из новых желаемых параметров назад к предыдущему состояние или настройки. Очень раздражает, и весь день он прошел мимо этих препятствий и больше экспериментировал с этими элементами управления. Надеемся, эта информация может предложить вам или кому-то еще ценность, которая позволит сэкономить время, избежать потенциальных разочарований и бесконечных страниц поддержки продуктов для просмотра.

  • 0
    Спасибо за ответ. Ваш подход звучит похоже на то, с чем я в конце концов пошел. Мы использовали Event Broker для трансляции изменений, при этом докладчики на стороне .NET нашего приложения прослушивали обновления параметров, а затем обновляли свои соответствующие представления по мере необходимости. Однако мы столкнулись с проблемами многопоточности на стороне VB6, на которую мы распространяли события. Я больше не в компании, и не могу вспомнить подробности.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню