Проверка данных формы - PullRequest
       1

Проверка данных формы

0 голосов
/ 12 февраля 2010

Я ищу лучший способ убедиться, что ни одно поле не оставлено пустым в форме, в настоящее время это моя реализация, если у вас есть лучшее, оно будет приветствоваться, обратите внимание, что я использую KryptonControls.

private bool verify(Control c)
{
    switch (c.GetType().Name)
    {
        case "KryptonTextBox":
            {
                if (((KryptonTextBox)c).Text == "")
                {
                    ((KryptonTextBox)c).StateCommon.Border.Color1 = Color.Red;
                    ((KryptonTextBox)c).GotFocus += new EventHandler(ControlGotFocus);
                    return false;
                }
            }
            break;
        case "KryptonComboBox":
            {
                if (((KryptonComboBox)c).SelectedIndex < 0)
                {
                    ((KryptonComboBox)c).StateCommon.ComboBox.Border.Color1 = Color.Red;
                    ((KryptonComboBox)c).GotFocus += new EventHandler(ControlGotFocus);
                    return false;
                }
            }
            break;
        case "KryptonDataGridView":
            {
                if (((KryptonDataGridView)c).Rows.Count <= 0)
                {
                    ((KryptonDataGridView)c).StateCommon.HeaderColumn.Border.Color1 = Color.Red;
                    ((KryptonDataGridView)c).GotFocus += new EventHandler(ControlGotFocus);
                    return false;
                }
            }
            break;
        default:    
            break;
    }

    if (c.Controls.Count > 0)
    {
        foreach (Control cc in c.Controls)
        {
            if (!verify(cc))
            {
                return false;
            }
        }
    }
    return true;
}

поэтому, когда пользователь устанавливает фокус на элемент управления, который должен быть проверен, этот код запускается:

void ControlGotFocus(object sender, EventArgs e)
{
    switch (sender.GetType().Name)
    {
        case "KryptonTextBox":
            {
                ((KryptonTextBox)sender).StateCommon.Border.Color1 = Color.Gray;
            }
            break;
        case "KryptonComboBox":
            {
                ((KryptonComboBox)sender).StateCommon.ComboBox.Border.Color1 = Color.Gray;
            }
            break;
        case "KryptonDataGridView":
            {
                ((KryptonDataGridView)sender).StateCommon.HeaderColumn.Border.Color1 = Color.Black;
            }
            break;
        default:
            break;
    }
}

Ответы [ 2 ]

1 голос
/ 13 февраля 2010

Я рекомендую класс проверки, написанный Деборой Курата, http://msmvps.com/blogs/deborahk/archive/2009/07/16/validation-class.aspx Это действительно помогло мне проверить форму с большим количеством текстовых полей.

1 голос
/ 12 февраля 2010

Вы можете оптимизировать код примерно так:

switch (c.GetType().Name)  {  case "KryptonTextBox": }

до:

TextBox tb = c as TextBox;
if (tb != null)
    return string.IsNullOrEmpty(tb.Text);

ComboBox cb = c as ComboBox;
if (cb != null)
   return cb.SelectedIndex < 0;

etc.

Но я предлагаю использовать валидаторы для этих куколок.

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