访问具有类似名称的面板



我正在制作一些有很多面板的游戏。他们的名字是polje1,polje2,polje3等等。。。对于其中的一些,我需要调用Invalidate()方法来刷新绘制事件,问题是我不想使用50个if或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()方法和only方法都不是选项,因为表单正在闪烁!我已经创建了我的类并执行DoubleBuffered();

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

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

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

相关内容

  • 没有找到相关文章