我正在尝试做一个表单,用户必须单击 ListCheckBox 上给出的选项中的至少一个选项才能启用一种“下一步”按钮。
但是,它无法按预期工作,因为有时在未选择任何选项时启用该按钮。
这是我进行验证的类的代码:
class CampoCheckedListBox : AbstractCampo
{
private CheckedListBox checkedListBox { get; set; }
private string nombre { get; set; }
private bool obligatorio { get; set; }
public CampoCheckedListBox(string nom, CheckedListBox controller, bool oblig)
{
this.checkedListBox = controller;
this.nombre = nom;
this.obligatorio = oblig;
}
public override void validar()
{
string mensaje = "";
if (this.obligatorio && checkedListBox.CheckedItems.Count==0)
{
mensaje += "-Seleccione al menos una de las opciones de " + this.nombre + "." + Environment.NewLine;
throw new ValidationException(mensaje);
}
}
}
以我的形式:
private void validarCampos()
{
List<AbstractCampo> campos = new List<AbstractCampo>();
campos.Add(new Campo("Nombre", tBoxRol.Text, true, Controller.TipoValidacion.Alfanumerico));
campos.Add(new CampoCheckedListBox("Funcionalidades", chkBoxFuncionalidades, true));
try
{
Controller.validarCampos(campos);
darAlta_button.Enabled = true;
errorBox.Text = "";
}
catch (ValidationException vEx)
{
errorBox.Text = vEx.mensaje;
darAlta_button.Enabled = false;
}
}
Controller.validarCampos() 只是从列表中获取每个对象并发送消息 validar(); 我在 ListCheckBox 上的 SelectedIndexChanged 事件中调用了这个 validarCampos()。
有时我检查了一个选项并且按钮未启用。但是,如果我取消选中相同的选项,然后再次选中它,按钮就会启用。
我在这里很迷失......