从另一个方法调用EventHandler

Com*_*umb 4 .net c#

如何在页面后面的相同代码上从另一个方法调用以下方法?

protected void CustomValidatorDelLN_ServerValidate(object sender, ServerValidateEventArgs args)
    {
        bool is_valid = txtDeliveryLastName.Text != "";
        txtDeliveryLastName.BackColor = is_valid ? System.Drawing.Color.White : System.Drawing.Color.LightPink;
        args.IsValid = is_valid;
    }
Run Code Online (Sandbox Code Playgroud)

我不知道如何处理这个(object sender, ServerValidateEventArgs args)位.我打电话CustomValidatorDelLN_ServerValidate();给括号里面放什么?

Jus*_*ner 6

既然你没有直接引用它sender,而你没有正确使用它ServerValidateEventArgs,你可以稍微改写一下:

var args = new ServerValidateEventArgs(String.Empty, false);
CustomValidatorDelLN_ServerValidate(null, args);
Run Code Online (Sandbox Code Playgroud)

我不会这样做.我会建议一个重构器.从其他代码调用事件处理程序真的没有意义.您可以轻松地提取验证逻辑并将其放在单独的方法中.然后,您可以在代码中的两个位置使用该新方法:

// You can call this method from both places
protected bool ValidateLastName()
{
    bool isValid = !String.IsNullOrWhiteSpace(txtDeliveryLastName.Text);
    txtDeliveryLastName.BackColor = isValid ? Color.White : Color.LightPink;
    return isValid;
}

// This would be the modified Event Handler
protected void CustomValidatorDelLN_ServerValidate(object sender,
    ServerValidateEventArgs args)
{
    args.IsValid = ValidateLastName();
}
Run Code Online (Sandbox Code Playgroud)