Это проверки достаточно, чтобы убедиться, что Вальс не пустые?


Я работаю на небольшое приложение, приложения WinForms, целью которого является захват данных и запись в файл XML. Я еще ребенок, где программирование-это так не могли бы вы, пожалуйста, посмотрите и предложите свои правки, как я уверен, что это не хороший подход. Я использую в масках-текстовое поле для номера накладной, которая должна содержать только цифры. Я стараюсь не использовать numupdown по понятным причинам.

InputVars является публичной классе с пустой строкой свойства (строковое значение {получить;набор;})

    private bool TestVal(string testedVal)
    {
        if (!String.IsNullOrEmpty(testedVal))
        {
            return true;
        }
        else
        {
            return false;
        }
    }



    private InputVars SetSemVars()
    {
        InputVars inVars = new InputVars();
        if (TestVal(txtCapt.Text))
        {
            inVars.captured = txtCapt.Text;
        }
        else
        {
            MessageBox.Show("Please insert your name here");
            txtCapt.Focus();
        }
        if (TestVal(mtxtInvoiceNumber.Text))
        {
            inVars.invoice = mtxtInvoiceNumber.Text;
        }
        else
        {
            MessageBox.Show("Please insert the invoice number here");
            mtxtInvoiceNumber.Focus();
        }
        if(TestVal(cmbNetwork.SelectedIndex.ToString()))
        {
            inVars.network = cmbNetwork.SelectedIndex.ToString();
        }
        else
        {
            MessageBox.Show("Please select the network ");
            cmbNetwork.Focus();
        }
        if(TestVal(cmbRegion.SelectedIndex.ToString()))
        {
            inVars.region = cmbRegion.SelectedIndex.ToString();
        }
        else
        {
            MessageBox.Show("Please select your office code here");
            cmbRegion.Focus();
        }
        if(TestVal(cmbSupplier.SelectedIndex.ToString()))
        {
            inVars.supplier = cmbRegion.SelectedIndex.ToString();
        }
        else
        {
            MessageBox.Show("Please select the supplier here");
            cmbSupplier.Focus();
        }
        return inVars;
    }

Я играл раньше и получил эту работу , я просто решил поделиться

        foreach (TextBox box in this.panel1.Controls.OfType<TextBox>())
        {
            if (String.IsNullOrWhiteSpace(box.Text))
            {
                box.Text = "Enter value here";
                //or do a messagebox etc.
                box.Focus();
                return;
            }

        }

это загружает и загружает короче и легче читать и убеждается, что я не забываю значение... мне gusta



696
4
задан 15 августа 2011 в 08:08 Источник Поделиться
Комментарии
2 ответа

Ваш метод testval это совершенно не нужно, просто делай свою проверку в метод. Я хотел создать EventHandler для каждого типа событий onchanged события управления, и тогда у тебя будет одна для полей и для текстовых полей. Имеют свойство tag каждого элемента управления имеют неправильное сообщение, которое будет отображаться. Просто набор текста и полей, которые вы хотите проверить для не-null/пробел, чтобы иметь тот же обработчик событий, чтобы избежать дублирование кода.

Что-то вроде так:

private void OnTextChanged(object sender, EventArgs e)
{
TextBox textBoxToValidate = sender as TextBox;
if (string.IsNullOrWhiteSpace(textBoxTovalidate.Text))
{
MessageBox.Show(textBoxToValidate.Tag.ToString());
textBoxToValidate.Focus();
}
}

private void OnSelectedIndexChanged(object sender, EventArgs e)
{
ComboBox comboBoxToValidate = sender as ComboBox;
if (string.IsNullOrWhiteSpace(comboBoxTovalidate.SelectedIndex.ToString()))
{
MessageBox.Show(comboBoxToValidate.Tag.ToString());
comboBoxToValidate.Focus();
}
}

2
ответ дан 15 августа 2011 в 12:08 Источник Поделиться


  1. Не используйте string.IsNullOrEmpty для проверки требуемых значений.

  2. Вы можете создать метод

    private bool IsEmpty(string value, string errorMessage, Control controlToValidate)
    {
    if ((value ?? string.Empty).Trim().Length == 0)
    {
    MessageBox.Show(errorMessage);
    controlToValidate.Focus();
    return true;
    }
    else
    {
    return false;
    }
    }

    вместо TestVal.


  3. Рассмотрите возможность использования события validating для проверки своего контроля и тег собственность связать сообщения об ошибках с управлением.

  4. Рассмотрите возможность использования ErrorProviders.

3
ответ дан 15 августа 2011 в 09:08 Источник Поделиться