如何动态检查框而不触发检查更改功能?我有20个动态创建的复选框,我有一个下拉列表,用于确定要检查的复选框数.
如果我选中3并单击第6个复选框,则应选中复选框9,7和8.在此过程中,我不想触发checkchanged功能.
CheckBox cb1 = (CheckBox)sender;
selectedbox = int.Parse(cb1.Name);
for (int i = 1; i < selectedquantity; i++)
{
premiumticket[selectedbox].Checked = true;
//here check changed firing i dont want that
selectedbox++;
}
Run Code Online (Sandbox Code Playgroud)
当状态发生变化时,您无法阻止CheckBox触发事件.考虑在您不需要时取消订阅活动:
for (int i = 0; i < selectedquantity; i++)
{
premiumticket[selectedbox + i].CheckedChanged -= checkBox_CheckedChanged;
premiumticket[selectedbox + i].Checked = true;
premiumticket[selectedbox + i].CheckedChanged += checkBox_CheckedChanged;
}
Run Code Online (Sandbox Code Playgroud)
如果您不需要,可以使用一些标志来省略事件处理:
flag = false;
for (int i = 0; i < selectedquantity; i++)
premiumticket[selectedbox + i].Checked = true;
flag = true;
Run Code Online (Sandbox Code Playgroud)
在处理程序中:
private void checkBox_CheckedChanged(object sender, EventArgs e)
{
if (!flag)
return;
//...
}
Run Code Online (Sandbox Code Playgroud)