You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于ValidateInputs的校验条件阻止SetValues等后续代码执行?

解决思路:通过校验返回值控制流程

这是个很典型的表单校验场景,咱们只需要调整ValidateInputs的返回值类型,再在点击事件里做个判断就能实现需求。具体操作如下:

1. 修改ValidateInputs方法,让它返回校验结果

把原来的void返回类型改成bool,校验不通过时返回false,全部校验通过后返回true:

private bool ValidateInputs() {
    if (txtBox_eventName.Text.Trim() == string.Empty) {
        MessageBox.Show("Please enter a valid event name", "Action Required", MessageBoxButtons.OK, MessageBoxIcon.Error);
        txtBox_eventName.Focus();
        return false; // 校验失败,返回false
    }
    if (nud_noOfGuests.Value < 10 || nud_noOfGuests.Value > 200) {
        MessageBox.Show("Please enter no of guests between 10 and 200", "Action Required", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return false;
    }
    if (radBtn_primeRib.Checked == false && radBtn_chickenMarsala.Checked == false && radBtn_gardenLasagna.Checked == false) {
        MessageBox.Show("Please make an Entree choice", "Action Required", MessageBoxButtons.OK, MessageBoxIcon.Error); // 这里修正了拼写错误:Reuired → Required
        return false;
    }
    // 所有校验都通过,返回true
    return true;
}

2. 在点击事件中根据校验结果决定是否执行后续逻辑

在btn_createEvent_Click方法里,先调用校验方法,如果返回false就直接退出方法,跳过后续代码;只有校验通过时才执行SetValues及之后的业务逻辑:

private void btn_createEvent_Click(object sender, EventArgs e) {
    // 先执行校验,不通过则直接终止方法
    if (!ValidateInputs()) {
        return;
    }
    
    // 只有校验全部通过,才会执行以下代码
    SetValues();
    calcCharges = new CateringEvent(eventName, noOfGuests, selectedEntre, barOption, wineOption);
    lbl_calcEntreCharges.Text = calcCharges.EntreCharge.ToString("C2");
    lbl_calcDrinkCharges.Text = calcCharges.DrinksCharge.ToString("C2");
    lbl_calcSurcharge.Text = calcCharges.Surcharge.ToString("C2");
    lbl_calcTotalCharges.Text = calcCharges.TotalCharge.ToString("C2");
    txtBox_eventName.Enabled = false;
    btn_createEvent.Enabled = false;
    btn_modifyEvent.Enabled = true;
}

这样修改后,只要ValidateInputs里任意一个校验条件触发,方法就会返回false,点击事件会直接跳出,后续的业务代码完全不会执行;只有所有校验都通过时,才会继续完成创建事件的逻辑。

内容的提问来源于stack exchange,提问作者Uz_IT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:23:41