必填字段为空时如何取消按钮单击动作?

时间:2018-07-27 01:20:31

标签: c# winforms

我有两种形式的程序。其中一个检查空字段,第二个插入记录。

private void CheckNullValues()
{
    if (textBox1.Text == "") { 
        MessageBox.Show("Field [Email] can not be empty","Information",MessageBoxButtons.OK, MessageBoxIcon.Information);
        textBox1.Focus();
        return();
    }
}

private void buttonAdd_Click(object sender, EventArgs e)
{
     CheckNullValues();
     MessageBox.Show("Insert record");
}

如果textBox1为空并且不让其显示CheckNullValues,如何停止执行MessageBox.Show("Insert record")过程中的操作?

3 个答案:

答案 0 :(得分:2)

您需要将CheckNullValues方法的类型更改为bool,以便根据TextBox是否为空而返回true或false值。< / p>

您可能还想将其名称更改为反映返回值的名称。我通常使用这样的东西:

private bool ValidInputs()
{
    if (string.IsNullOrEmpty(textBox1.Text))
    { 
        MessageBox.Show("Field [Email] can not be empty","Information", 
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
        textBox1.Focus();
        return false;
    }
    if (string.IsNullOrEmpty(textBox2.Text))
    { 
        // ...
        return false;
    }

    return true;
}

然后在按钮单击事件中,您可以轻松地执行以下操作:

if (!ValidInputs()) return;

此外,为避免在ValidInputs()方法中重复代码,可以将用于验证TextBox内容的逻辑移到单独的方法中:

public bool TextBoxEmpty(TextBox txtBox, string displayMsg)
{
    if (string.IsNullOrEmpty(txtBox.Text)) 
    { 
        MessageBox.Show(displayMsg, "Required field", 
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
        txtBox.Focus();
        return true;
    }

    return false;
}

这样,您的ValidInputs()方法将变为:

private bool ValidInputs()
{
    if (TextBoxEmpty(textBox1, "Field [Email] can not be empty")) return false;
    if (TextBoxEmpty(textBox2, "Some other message")) return false;
    // ...

    return true;
}

答案 1 :(得分:0)

如果将检查某项是否为null的函数设置为返回true或false,则可以在click事件中使用if语句。

if (!checkForNulls()) {
    MessageBox.Show("Insert record");
}

答案 2 :(得分:0)

请如下修改您的代码:        私人布尔CheckNullValues()         {

        if (textBox1.Text == "")
        {
            MessageBox.Show("Field [Email] can not be empty", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
            textBox1.Focus();
            return false;
        }
        else
        {
            return true;
        }
    }

    private void buttonAdd_Click(object sender, EventArgs e)
    {
        if (CheckNullValues())
        {
            MessageBox.Show("Insert record");
        }       
    }