复选框中的C#

use*_*618 3 c# winforms

如何动态检查框而不触发检查更改功能?我有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)

Ser*_*kiy 8

当状态发生变化时,您无法阻止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)