1

プロットはこれです-私はSave()それ自体で検証メソッドを呼び出すメソッドを持っており、検証メソッドがエラーをキャッチした場合、メソッドの実行Save()が停止されることを確認したいと思います。私が行ったことはbool、検証のためのメソッドを作成することです。

protected virtual bool IsNullOrEmptyControl(params Control[] controls)
        {
            bool validationFlag = false;
            foreach (Control ctrl in controls)
            {
                if (string.IsNullOrWhiteSpace(ctrl.Text))
                {
                    ctrl.BackColor = System.Drawing.Color.Yellow;                
                    if (validationFlag == false)
                    {
                        ctrl.Focus();
                        validationFlag = true;
                    }
                }
            }
            if (validationFlag == true)
            {
                MessageBox.Show("The fields in yellow could not be empty", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            return true;
        }

そして、私のメソッドを使用してそれを呼び出すSave()

public bool Save()
{
some code...
IsNullOrEmptyControl(txtClientCode, txtClientName);
some code..
clientService.Save(entity);
}

私のIsNullOrEmptyControl()メソッドはboolそれが戻った場合なのでfalse、これはそれ以上のコード実行の停止を意味すると思いましSave()たが、私は間違っていたようです。では、これを行う正しい方法は何ですか?

4

4 に答える 4

1

IsNullOrEmptyControlメソッドは値を返すだけです。コードでこの値を確認し、それに反応する必要があります

bool checkResult = IsNullOrEmptyControl(txtClientCode, txtClientName);
if(checkResult == false)
{
    return false;
}
some code..
clientService.Save(entity);
于 2013-02-25T11:04:21.607 に答える
0

コードは次のようになります。

public bool Save()
{
  some code...
    if(IsNullOrEmptyControl(txtClientCode, txtClientName)) {  
      some code..
      clientService.Save(entity);
    }
}
于 2013-02-25T11:02:51.483 に答える
0

保存呼び出しの周囲にifステートメントを作成する必要があります。IsNullOrEmptyControlfalseが返された場合、はclientService.Save(entity);実行されません。

public bool Save()
{
    //some code...
    if(IsNullOrEmptyControl(txtClientCode, txtClientName))
    {
        //some code..
        clientService.Save(entity);
    }
}
于 2013-02-25T11:02:55.040 に答える
0

実際には、検証メソッドの戻り値を変数に割り当て、を呼び出す前にそれを確認する必要がありますclientService.Save()

foreachまた、フラグをに設定した行のすぐ下で、上のループを中断することもできますtrue

于 2013-02-25T11:04:34.777 に答える