Я не знаком с этим элементом управления, поэтому у меня может быть не весь синтаксис правильный, но я думаю, что вы можете попытаться перебрать все элементы и "снять" все, что было проверено.Кроме того, вам придется временно отключить событие, иначе это событие, вероятно, будет продолжать срабатывать при каждом снятии флажка:
private void PreDefSerials_SelectedValueChanged(object sender, EventArgs e)
{
if (!one_select)
return;
else
{
if (PreDefSerials.SelectedIndex > -1)
{
//only uncheck items if the current item was checked:
if (PreDefSerials.CheckBoxItems[PreDefSerials.SelectedIndex].CheckState == CheckState.Checked)
{
// stop firing event for now:
PreDefSerials.SelectedValueChanged -= PreDefSerials_SelectedValueChanged;
for (int i = 0; i < PreDefSerials.CheckBoxItems.Count; i++)
{
if (i != PreDefSerials.SelectedIndex)
{
PreDefSerials.CheckBoxItems[i].CheckState = CheckState.Unchecked;
}
}
// wire event again:
PreDefSerials.SelectedValueChanged += PreDefSerials_SelectedValueChanged;
}
}
}
}
Это предполагает, что при проверке элемента оно будетпроверьте и запустите это событие.Этот код просто проходит по списку, а затем «снимает» все остальное.Рефакторинг по мере необходимости.