访问具有相似名称的面板

时间:2014-04-10 21:18:31

标签: c# winforms names panels

我正在制作一些游戏,我有很多面板。他们的名字是polje1,polje2,polje3等......对于其中一些人,我需要调用Invalidate()方法来刷新paint事件,问题是我不想使用50 ifs或switch函数。

那么,我可以做一些像("polje" + number).Invalidate();

这样的事情

如果您不理解,请参阅以下代码:

Random rnd = new Random();
private Panel polje1;
private Panel polje2;
private Panel polje3;
private Panel polje4;
private Panel polje5;
private Panel polje6;
private Panel polje7;
private Panel polje8;
private Panel polje9;
private Panel polje10;

definition bla bla bla
...

private void button1_MouseClick(object sender, MouseEventArgs e)
{
  int pp = rnd.Next(1,7);
  SetCurrentField(pp);
  ("polje" + pp).Invalidate();

}

Invalidate()方法都不是一个选项,因为表单闪烁!我已经完成了我的课程并执行了DoubleBuffered();

1 个答案:

答案 0 :(得分:1)

您可以通过容器的控件集合访问控件的名称属性:

显示ContainsKey函数的示例,以确保集合中存在控件的名称:

Panel polje1 = new Panel() { Name = "polje1" };
this.Controls.Add(polje1);
if (this.Controls.ContainsKey("polje1")) {
  this.Controls["polje1"].BackColor = Color.Red;
}