设置标签.在组框中基于其位置属性的文本

本文关键字:位置 于其 属性 文本 标签 设置 | 更新日期: 2023-09-27 18:09:56

我使用c#和windows窗体,我有一个组框,其中有20个标签(10个在上行,10个在下行)

我想根据这些标签在组框中的位置坐标设置它们的Text属性。同行中所有标签的Y坐标保持不变,只有X坐标改变。

Example locations:
label1.Location is (6,16), label2.Location is (33,16) ... label10.Location is (150,16)
label11.Location is (6,43), label12.Location is (33,43) ... label20.Location is (150,43)

原来是标签。文本设置为label_[int a]_[int b],其中int a是1到10之间的数字,表示其"列"号,int b是1 2,表示其"行"号。

现在这一切都很好,但我需要60个组框,每个组框有20个标签,重命名每个组框很痛苦,这就是为什么我喜欢这样做的原因。

之所以这样设置是因为每个"列"在顶部或底部行中只能得到1个数字。

第一个问题是;是否可以通过其位置属性设置文本属性?

第二,stackoverflow的蜂群思维能想出一个更好/更有效的方法来做到这一点吗?

注意:我已经尝试将标签加载到List中以尝试使用循环,但这会导致选择适当标签的复杂性。

我正在尝试开发一种可以在每个组框上单独使用的方法。

现在,虽然这些在我脑海中都有意义,但我不能立即看到我可以提供什么其他信息

设置标签.在组框中基于其位置属性的文本

这听起来像是一个很好的候选用户控件。

设计一个带有组框和标签的用户控件。向外部公开所需的操作。这可能是为对你更有意义的东西设定命名约定的好时机。

另一种方法是从代码中生成标签,而不是像@Kevin说的那样在设计时生成标签。创建一个方法来获取组框和其他需要的值。然后根据需要设置标签名称和位置(查看设计器文件)。

我想我可以尝试一个foreach到GroupBox。控件,您也可以在这个foreach中检查它们的名称。例子:

foreach(Label lbl in groupBox1.Controls
{
   if (lbl.Name.Contains("[int_a]_[int_b]"))
   {
      lbl.Text = "Label Text";
   }  
}

我想这给了你一个你需要的基础

相关文章: