【问题标题】:get panel at specific positions in C#在 C# 中的特定位置获取面板
【发布时间】:2013-01-29 00:46:05
【问题描述】:

例如,我得到了 25 个网格状的面板(5 行,5 列), 如果我点击其中一个我想获得例如上面的面板也是。 起初,我将面板命名为它们的位置,例如面板X1Y1,面板X1Y2 ... 然后我从名称中取出坐标并创建了新的坐标... 在获得新名称后,我使用 foreach 循环遍历所有项目并获得具有正确名称的项目。

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

但我不想遍历所有项目... 如果我知道它的名称,我如何获取该项目,以循环遍历所有项目并检查它们的名称..

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

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

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

【问题讨论】:

  • 不太清楚你在追求什么......你能提供一个示例场景吗?请注意,这不是解释,而是类似“好的,我知道了。如果我这样做那样,它应该那样那样做,但是这样做那样那样,这是所涉及的相关代码”

标签: c# winforms


【解决方案1】:

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

myForm.Controls.Find("panelX1Y2")

要建议更好的方法,请不要将字符串用于此类内容。这是hackish和草率。

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

【讨论】:

  • 是的,我刚刚找到了一个几乎类似的解决方案:this.Controls[newpanel].BackColor = Color.AliceBlue;我也用二维数组试试这个......
【解决方案2】:

你不能用字典吗?请记住,如果字典对您很重要,则不会对其进行排序。

 Dictionary<string, Panel> dcPanels = new Dictionary<string, Panel>();
 dcPanels.Add("GridA", new Panel());
 Panel p = dcPanels["GridA"];

【讨论】:

  • 将是一个足够简单的二维数组吗?因为我从来没有用过字典..
猜你喜欢
  • 1970-01-01
  • 2012-11-12
  • 1970-01-01
  • 1970-01-01
  • 2013-02-07
  • 2017-08-11
  • 2014-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多