我正在使用多个checkboxcomboboxes。对于我的解决方案,其中一个盒子需要在特定情况下表现为组合框。我只需要选择一个值。我尝试了以下方法:
private void PreDefSerials_SelectedValueChanged(object sender, EventArgs e)
{
if (!one_select)
return;
else
{
// set selected value
if (PreDefSerials.SelectedIndex != 0)
PreDefSerials.CheckBoxItems[PreDefSerials.SelectedIndex].CheckState = CheckState.Checked;
return;
}
}
EDTI:
如何将项目的所有检查状态设置为未选中,并且aftwerwards将选中最新选定值的检查状态?
答案 0 :(得分:1)
我不熟悉那个控件,所以我可能没有正确的语法,但我认为你可以尝试循环你的项目并“取消选中”任何已检查的内容。此外,您必须暂时关闭该事件,否则此事件可能会继续触发每个“取消选中”:
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;
}
}
}
}
这假定当您检查某个项目时,它将被检查并触发此事件。此代码只是遍历列表,然后“取消”其他所有内容。根据需要重构。