识别数组中未使用的索引

Identifying indexes in an array that haven't been used

好的,所以我创建了一个包含四个按钮的数组,当单击其中一个按钮时,背景颜色将发生变化,并且该按钮的值将存储在一个变量中。但是,如果单击另一个按钮,那么我希望最初单击的按钮恢复到原来的背景颜色,而新按钮将更改其背景颜色。 IE。一次只有一个按钮 'selected'。目前我有这个:

btn[0].BackColor = Color.DimGray;
btn[1].BackColor = Color.DimGray;
btn[2].BackColor = Color.DimGray;
btn[3].BackColor = Color.DimGray;
btn[selectedIndex].BackColor = Color.Lime;

我想知道是否有办法让我隔离未选中的索引并将它们全部设置回相同的颜色,而不必多次重复同一行代码,我问是因为有界面上多了 17 个按钮,看起来简直糟透了。

您可以在单个 for 循环中设置它们,如下所示:

for (var i = 0 ; i != btn.Length ; i++) {
    btn[i].BackColor = (i == selectedIndex)
                     ? Color.Lime
                     : Color.DimGray;
}

循环内的条件将当前索引 iselectedIndex 进行比较,并确定按钮的背景是否设置为石灰或暗灰色。