1

例如,我得到了 25 个像网格一样形成的面板(5 行,5 列),如果我单击其中一个我想获得例如上面的面板。起初我将面板命名为它们的位置,例如 PanelX1Y1,PanelX1Y2 ...然后我从名称中取出坐标并创建新坐标...在我获得新名称后,我使用 foreach 循环遍历所有物品并获得具有正确名称的物品。

我已经用winforms的位置试过了,所以我拿了点击的一个addet的位置,例如25像素,遍历表单中的所有项目,并通过它们的位置检查它们。

但我不想遍历所有项目......如果我知道它的名字,我怎么能得到这个项目来遍历所有项目并检查它们的名字..

我可以用这个吗:this.Controls["name"];

好的,我的网格:p11 p12 p13 p21 p22 p23 p31 p32 p33

如果我点击 p31,我想在 p31 和 p21 处更改一些东西,所以我需要对象 p21

4

2 回答 2

1

要直接回答您的问题,您可以使用类的Find()方法ControlCollection。例如:

myForm.Controls.Find("panelX1Y2")

要提出更好的方法,请不要将字符串用于这样的事情。这是hackish和草率。

相反,在二维数组中初始化您的面板并使用数组索引来找到正确的面板。

于 2012-09-13T07:57:02.637 回答
-1

你不能用字典吗?请记住,如果这对您很重要,则不会订购字典。

 Dictionary<string, Panel> dcPanels = new Dictionary<string, Panel>();
 dcPanels.Add("GridA", new Panel());
 Panel p = dcPanels["GridA"];
于 2012-09-13T07:45:57.650 回答