【发布时间】:2017-03-29 23:29:55
【问题描述】:
我想根据检查和控件的未选中状态对数组列表进行排序,选中的复选框将排在第一位,未选中的复选框将排在列表的后面。然后我会将它添加到面板中。这怎么可能?
【问题讨论】:
我想根据检查和控件的未选中状态对数组列表进行排序,选中的复选框将排在第一位,未选中的复选框将排在列表的后面。然后我会将它添加到面板中。这怎么可能?
【问题讨论】:
将 CheckBoxes 放在一个通用列表中并使用其Sort 方法。
List<CheckBox> checkBoxes = GetCheckBoxes();
// Unchecked CheckBoxes first
checkBoxes.Sort((firstCheckBox, secondCheckBox) => return firstCheckBox.Checked ? +1 : -1);
// Checked CheckBoxes first
checkBoxes.Sort((firstCheckBox, secondCheckBox) => return firstCheckBox.Checked ? -1 : +1);
【讨论】:
checkBox => return checkBox.Checked ? -1 : +1 (-1 和 +1 放错了位置,这将排序未选中然后选中)问题是在未选中之前将所有选中排序。
您可以改用一个通用的复选框列表并按如下方式对其进行排序:
List<CheckBox> ar;
ar.Sort(c => c.Checked);
确保初始化列表...
【讨论】: