【发布时间】:2011-03-10 08:07:03
【问题描述】:
我有一个复选框控件,我想一次只选择一个项目,我目前正在使用此代码来做同样的事情。
private void CLSTVariable_ItemCheck(object sender, ItemCheckEventArgs e)
{
// Local variable
int ListIndex;
CLSTVariable.ItemCheck -= CLSTVariable_ItemCheck;
for (ListIndex = 0;
ListIndex < CLSTVariable.Items.Count;
ListIndex++)
{
// Unchecked all items that is not currently selected
if (CLSTVariable.SelectedIndex != ListIndex)
{
// set item as unchecked
CLSTVariable.SetItemChecked(ListIndex, false);
} // if
else
{
// set selected item as checked
CLSTVariable.SetItemChecked(ListIndex, true);
}
} // for
CLSTVariable.ItemCheck += CLSTVariable_ItemCheck;
}
这段代码运行良好。
但问题是,当我一次又一次单击所选项目时,不应取消选中该所选项目,这意味着至少应始终检查一个项目...
【问题讨论】:
-
如果您只想选择一项,为什么不使用
RadioButtonList?用锯子锯,用螺丝刀拧螺丝…… -
Bazz,确实如此。但我不得不说我“经常”找到这种方法来做一个标签一个复选框的解决方案。任何有充分理由的人,请将其标记给我! (化妆品除外,这是我可以服用的原因)。
-
我同意 Bazzz 的观点。错误的工作工具。 UX 的一个关键方面是用户非常熟悉某些 UI 提示。多年看到复选框意味着他们希望能够选中多个。如果您强制选中一个复选框,这对用户来说是一种非常不和谐的体验。
-
@Ray Booysen:同意,除此之外,违背流程意味着您最终会遇到编码困难,从而导致在 StackOverflow 上提问:)
标签: c# winforms checkedlistbox