Проверка Silverlight (как) в приложении Windows Form - PullRequest
0 голосов
/ 23 сентября 2010

Мне нужно включить / отключить кнопку SAVE в режиме реального времени на основе данных в моих полях.

Является ли приведенный ниже приемлемый способ для достижения этой цели? Это неправильно, но я не знаю, как еще я мог бы сделать это.

Каждый пользовательский элемент управления ( CRUD Form ) имеет BackgroundWorker и следующие связанные методы;

  • StartBGWorker()
  • StopBGWorker()
  • RequiredFieldsValid()

Там цель самоочевидна, я надеюсь. Процесс идет таким образом, что когда пользователь нажимает NEW или EDIT, он вызывает StartBGWorker(), который создает новый BackgroundWorker и вызывает RunDataASync(). DoWork() метод BGWorker выглядит следующим образом:

    void bgWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        ucNavDiagnosis.btnSave.Enabled = Convert.ToBoolean(e.UserState);
    }

    void bgWorker_DoWork(object sender, DoWorkEventArgs e)
    {            
        while (true)
        {                
            bgWorker.ReportProgress(0, RequiredFieldsValid());
            System.Threading.Thread.Sleep(500);
        }
    }

private bool RequiredFieldsValid()
{
    // TODO: Add other required fields
    return (!memAllergies.Text.Equals(string.Empty));
}

Это работает, но ощущается как "буш-лига". В любом случае, когда пользователь нажимает СОХРАНИТЬ или ОТМЕНА, делается звонок на StopBGWorker(), который Disposes рабочий.

В качестве еще одного отказа от ответственности, это приложение в настоящее время не использует привязку. Это длинное объяснение, но это, как говорится.

1 Ответ

1 голос
/ 23 сентября 2010

Как насчет использования проверяющих событий для обновления включенного состояния кнопки сохранения? !!

protected virtual void MyTextBox_OnValidating(CancelEventArgs e)
{
     this.SaveButton.Enabled = (Validate(MyTextBox));
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...