更改C#lineShapes时如何避免大开关

时间:2014-04-08 17:21:41

标签: c# .net

我正在使用一台简单的鼓机,并试图通过显示和隐藏线对象来实现播放位置栏。酒吧总共有32个职位。我目前有一个很大的开关声明。

switch (pos)
{
    case 1:
        lineShape1.Visible = true;
        lineShape32.Visible = false;
        break;
    case 2:
        lineShape2.Visible = true;
        lineShape1.Visible = false;
        break;
    case 3:
        lineShape3.Visible = true;
        lineShape2.Visible = false;
        break;
    //cases repeated 32 times
}

我想实现类似的东西,

CheckBox snabox = this.Controls["checkBox" + pos.ToString()] as CheckBox;
if (snabox.Checked)
{
    Snare_Click(null, null);
}

其中名称会自动更改为测试特定复选框。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

为什么不将它们添加到List<>或数组并使用索引器来设置对象的可见性?

这样的东西
lineShapes[pos-1].Visible = true;
pos == 1 ? lineShapes[lineShapes.Length - 1].Visible = false : lineShapes[pos-2].Visible = false;