c#winforms中的CheckState不定循环无限次

c#winforms中的CheckState不定循环无限次,c#,winforms,checkboxlist,C#,Winforms,Checkboxlist,当我选中列表中的任何复选框时,我尝试将复选框列表中的所有项目灰显,但选中的项目除外。这是我的轨迹,它将进入无限循环 问题是什么?有什么想法吗 private void CheckEveryOther_Click(object sender, System.EventArgs e) { for (int i = 0; i < checkedListBox1.Items.Count; i++) { var state = checkedListBox1.GetI

当我选中列表中的任何复选框时,我尝试将复选框列表中的所有项目灰显,但选中的项目除外。这是我的轨迹,它将进入无限循环

问题是什么?有什么想法吗

private void CheckEveryOther_Click(object sender, System.EventArgs e)
{
    for (int i = 0; i < checkedListBox1.Items.Count; i++)
    {
        var state = checkedListBox1.GetItemCheckState(i);

        if (state != CheckState.Checked && state != CheckState.Indeterminate)
        {
             checkedListBox1.SetItemCheckState(i, CheckState.Indeterminate);
        }
    }        
}
private void CheckEveryOther_单击(对象发送方,System.EventArgs e)
{
对于(int i=0;i
private void CheckEveryOther\u单击(对象发送者,System.EventArgs e)
{
{Control}.{ControlsEvent}-=neweventhandler(CheckEveryOther_Click);
对于(int i=0;i

用正在使用的控件替换{Control},用正在激发的控件事件替换{ControlsEvent}。

event->loop->inside loop
set
->event?ItemCheck检查事件。我认为这是问题的根源。有没有其他方法可以实现这一点?你是否真的调试过它,看看它在做什么?你是否试图制作一组复选框,就像一组单选按钮?如果是这样,只需使用单选按钮。谢谢,它现在不会无限循环。但我仍然可以选择或取消选择不确定的复选框。有什么方法可以阻止它吗?我知道了,如果(e.CurrentValue==CheckState.Indeterminate){e.NewValue=CheckState.Indeterminate;}谢谢
private void CheckEveryOther_Click(object sender, System.EventArgs e)
{
    {Control}.{ControlsEvent} -= new  EventHandler(CheckEveryOther_Click);

    for (int i = 0; i < checkedListBox1.Items.Count; i++)
    {
        var state = checkedListBox1.GetItemCheckState(i);

        if (state != CheckState.Checked && state != CheckState.Indeterminate)
        {
             checkedListBox1.SetItemCheckState(i, CheckState.Indeterminate);
        }
    } 

    {Control}.{ControlsEvent} += new  EventHandler(CheckEveryOther_Click);     
}