用于执行 WinForms 验证的错误日志类





0/5 (0投票)
使用错误日志控件验证表单。
在验证 Windows Forms 时,我发现使用多个错误提供程序相当笨拙。 因此,我决定创建一个错误日志,该日志会自动创建与表单验证方法所需的错误提供程序一样多的数量。 该类在本技巧的末尾列出。
使用该类
- 声明一个错误日志成员
- 在
load
或shown
事件中创建一个错误日志实例 - 创建一个使用错误日志的验证方法
private ErrorLog _eLog;
eLog = new ErrorLog(this);
private bool IsDataOk() {
_eLog.Clear();
if (txtProjectName.Text == "") {
_eLog.AddError(txtProjectName, "Project name is obligatory");
}else if( Project.IsUnique(txtProjectName.Text ) == false){
_eLog.AddError(txtProjectName, "Project name must be unique");
}
//IMPORTANT : Notice each control must have its own if..elseif block
if (txtPlannedDate.Text == ""){
_eLog.AddError(txtPlannedDate, "Planned date is obligatory");
}
return _eLog.IsOk();
}
错误日志类如下
public class ErrorLog {
ContainerControl _parent;
List _log;
List _controls;//Unnecesary : Kept only for a future error summary control
public int Count {
get { return _log.Count; }
}
public string GetMessage(int idx) {
string result = "";
int itop = _log.Count;
if (idx <= itop) {
result = _log[idx].GetError(_controls[idx]);
}
return result;
}
public ErrorLog(ContainerControl parent) {
_parent = parent;
_log = new List();
_controls = new List();
}
public void Clear() {
_log.Clear();
_controls.Clear();
}
public void AddError(Control control, string message) {
ErrorProvider p = new ErrorProvider(_parent);
p.SetError(control, message);
_log.Add(p);
_controls.Add(control);
}
public bool IsOk(){
if (_log.Count == 0) {
return true;
} else {
return false;
}
}
}