设置标签.在组框中基于其位置属性的文本
本文关键字:位置 于其 属性 文本 标签 设置 | 更新日期: 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";
}
}
我想这给了你一个你需要的基础