Проверка полей в winforms - PullRequest
       1

Проверка полей в winforms

4 голосов
/ 26 августа 2010

Есть ли ярлык для проверки полей в winforms? Например, конкретный текстовый ящик должен быть заполнен перед сохранением записи. Я всегда проверяю все необходимые поля программно перед сохранением. Пример:

protected bool CheckFields()
{
    bool isOk = false;
    if(textBox1.Text != String.Empty)
      {
          isOk = true;
      }
    return isOk;
} 

private void btnSave_Click(object sender, EventArgs e)
{
    if(CheckFields())
      {
          Save();// Some function to save record.
      }
}

Есть ли в ASP.Net встречная часть Validator в winforms? Или любым другим способом ...

Ответы [ 3 ]

5 голосов
/ 26 августа 2010

Вот один подход:

    private List<Control> m_lstControlsToValidate;
    private void SetupControlsToValidate()
    {
        m_lstControlsToValidate = new List<Control>();

        //Add data entry controls to be validated

        m_lstControlsToValidate.Add(sometextbox);
        m_lstControlsToValidate.Add(sometextbox2);

    }
   private void ValidateSomeTextBox()
   {
        //Call this method in validating event.
        //Validate and set error using error provider
   }

   Private void Save()
   {
        foreach(Control thisControl in m_lstControlsToValidate)
        {
            if(!string.IsNullOrEmpty(ErrorProvider.GetError(thisControl)))
            {                    
                //Do not save, show messagebox.
                return;
            }
        }
     //Continue save
   }

РЕДАКТИРОВАТЬ:

Для каждого элемента управления в m_lstControlsToValidate вам нужно написать метод проверки, который будет запущен в событии Validating.

* 1007ErrorProvider.GetError (thisControl) вернет текст ошибки или пустую строку.Пустая строка означает, что контроль в порядке.В противном случае элемент управления содержит некоторую ошибку, и мы прекращаем операцию сохранения.

Мы делаем это со всеми элементами управления в m_lstControlsToValidate.Если все элементы управления не содержат ошибок, мы продолжаем с save else abort.

0 голосов
/ 26 августа 2010

Использовать контроль проверки.Их лучше всего использовать.

Кроме того,

protected bool CheckFields()
{
    bool isOk = false;
    if(textBox1.Text != String.Empty)
      {
          isOk = true;
      }
    return isOk;
} 

Может быть значительно сокращено до:

protected bool CheckFields()
{
    return textBox1.Text != String.Empty;
} 
0 голосов
/ 26 августа 2010

Не совсем, в Win Form вы должны использовать Control.Validating Event для проверки, когда пользователь работает с формой.Но для сохранения проверки у вас есть код для записи, который проверяет, что все данные правильно введены пользователем.Например, вы можете создать обязательный TextBox и перебрать все элементы управления формой, ища этот тип элемента управления и проверить, что пользователь ввел некоторый текст.

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