//加入ItemCheck方法
this.cblChangeMode.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.SelectOne);
//加入控制是否继续的全局变量,防止进入死循环
public bool canContinue = true;
private void SelectOne(object sender, ItemCheckEventArgs e)
{
CheckedListBox clb = sender as CheckedListBox;
//勾选原选项
if (clb.CheckedIndices.Count > 0 && clb.CheckedIndices[0] == e.Index && canContinue )
{
e.NewValue = CheckState.Checked;
}
//第一次勾选
else if (clb.CheckedIndices.Count == 0)
{
canContinue = true;
}
//勾选新选项
else if (clb.CheckedIndices.Count > 0 && clb.CheckedIndices[0] != e.Index)
{
canContinue = false;
clb.SetItemChecked(clb.CheckedIndices[0], false);
}
//勾选新选项后重置CanContinue
else
{
canContinue = true;
}
}
PS:勾选后事件可以写在CheckedListBox的SelectedIndexChanged事件中,第一次触发写在上述代码中的“第一次勾选”中。