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);
}