好吧,我有一个Form,它接收Employee的级别,并根据他的级别启用一些选项Checkboxes
.然而,我面临的问题是,对于我的应用程序的逻辑,每个选项都有特定的级别范围,所以我创建了一个丑陋的IF
范围检查语句,我相信有更好的方法来实现.
代码:
if (level >= 1 && level < 3) { _items[0].Enabled = true; _items[1].Enabled = false; _items[2].Enabled = false; _items[3].Enabled = false; _items[4].Enabled = false; _items[5].Enabled = false; _items[6].Enabled = false; _items[7].Enabled = false; } else if (level >= 3 && level < 5) { _items[0].Enabled = true; _items[1].Enabled = true; _items[2].Enabled = false; _items[3].Enabled = false; _items[4].Enabled = false; _items[5].Enabled = false; _items[6].Enabled = false; _items[7].Enabled = false; } else if (level >= 5 && level < 7) { _items[0].Enabled = true; _items[1].Enabled = true; _items[2].Enabled = true; _items[3].Enabled = false; _items[4].Enabled = false; _items[5].Enabled = false; _items[6].Enabled = false; _items[7].Enabled = false; } else if (level >= 7 && level < 9) { _items[0].Enabled = true; _items[1].Enabled = true; _items[2].Enabled = true; _items[3].Enabled = true; _items[4].Enabled = false; _items[5].Enabled = false; _items[6].Enabled = false; _items[7].Enabled = false; } else if (level >= 9 && level < 11) { _items[0].Enabled = true; _items[1].Enabled = true; _items[2].Enabled = true; _items[3].Enabled = true; _items[4].Enabled = true; _items[5].Enabled = false; _items[6].Enabled = false; _items[7].Enabled = false; } else if (level >= 11 && level < 13) { _items[0].Enabled = true; _items[1].Enabled = true; _items[2].Enabled = true; _items[3].Enabled = true; _items[4].Enabled = true; _items[5].Enabled = true; _items[6].Enabled = false; _items[7].Enabled = false; } else if (level >= 13 && level < 15) { _items[0].Enabled = true; _items[1].Enabled = true; _items[2].Enabled = true; _items[3].Enabled = true; _items[4].Enabled = true; _items[5].Enabled = true; _items[6].Enabled = true; _items[7].Enabled = false; } else if (level >= 15 && level < 17) { _items[0].Enabled = true; _items[1].Enabled = true; _items[2].Enabled = true; _items[3].Enabled = true; _items[4].Enabled = true; _items[5].Enabled = true; _items[6].Enabled = true; _items[7].Enabled = true; }
dasblinkenli.. 18
你可以用一点点数学来简化这个:
int on = (level+1)/2; for (int i = 0 ; i != 8 ; i++) { _items[i].Enabled = (i < on); }
第一行将1到16(包括1和16)范围内的数字转换为1到8(包括1和8)范围内的数字.然后循环遍历所有项目,并启用它们中的许多项目,如on
前面计算的变量值所示.