У меня есть приложение, содержащее несколько элементов управления MemoEdit, содержащих средства проверки правописания DevExpress. Когда пользователь обновляет параметры (через контекстное меню MemoEdit), мы сохраняем эти параметры в нашем db. Есть ли встроенный способ трансляции этих новых параметров во все проверки орфографии в приложении? Возможно, стоит отметить, что некоторые элементы MemoEdits используются в элементах управления Interop в части VB6 нашего приложения.
Прямо сейчас я использую события, но все не так хорошо, как я надеялся, и прежде чем я слишком глубоко закрою свое собственное решение, я подумал, что я попрошу SO людей.
Заранее благодарим за любые советы.
Мой технический руководитель, и я только что приобрел 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" элемент управления имеет неприятный способ запомнить предыдущее состояние того, какие параметры были перед тем, как вы их изменили, и во время этих ненужных двух из трех пожаров событий, он изменяет настройки параметров из новых желаемых параметров назад к предыдущему состояние или настройки. Очень раздражает, и весь день он прошел мимо этих препятствий и больше экспериментировал с этими элементами управления. Надеемся, эта информация может предложить вам или кому-то еще ценность, которая позволит сэкономить время, избежать потенциальных разочарований и бесконечных страниц поддержки продуктов для просмотра.