c# - 动态更新标签
问题描述
如何动态更新表单中标签的文本,使其文本按从 1 到 25 的顺序编号?
在伪代码中,是这样的:
for (int i = 1; i <= 25; i++) {
label + 'i'.Text = "i";
}
解决方案
我会这样做(经过测试):
foreach (var label in Controls.OfType<Label>())
{
label.Text = label.Name.Replace("label", "");
}
由于您不需要按顺序填写所有标签文本,因此您可以遍历它们并替换“标签”文本。假设是您所做的假设,即所有标签都命名为“label1”、“label2”等,再加上所有标签都在一个公共控件(面板)或窗口本身内的事实,这就是我所做的。
编辑:其他想法
上面的解决方案有效,但为了让事情更有趣,您可以添加一种方法来防止处理不遵守您的命名约定的标签(即“标签”后跟一个数字):
foreach (var label in Controls.OfType<Label>())
{
if (RespectsNamingConvention(label.Name))
{
label.Text = label.Name.Replace("label", "");
}
}
你在哪里
private bool RespectsNamingConvention(string name)
{
var Suffix = name.Replace("label", "");
return
name.StartsWith("label") &&
Suffix.Count() > 0 &&
Suffix.Where(e => !Char.IsDigit(e)).Count() == 0;
}
即您检查您的标签名称是否以“标签”开头,后跟仅包含数字的内容。
另一个改进可能是在您的窗口中获取所有标签,即使它们不在同一个控件中。
可以像this question中所示那样完成。
推荐阅读
- python - 如何将格式应用于 allure json 结果文件中的步骤名称
- loops - csh - 在所有子目录和某个扩展名的所有文件中循环
- c# - 在 postgresql 中将 50K 记录插入大表(应用程序。350 列)的最佳方法
- html - 允许 flexbox 中的项目与容器的边缘均匀对齐,而无需间隔
- c# - 尝试使用 C# 连接到 SQL Server
- amazon-web-services - AWS EC2: cannot get bare metal instance
- php - 如何显示目录和所有子目录中的文件?
- javascript - 我怎样才能在网页上显示这个?不在 console.log 上
- php - 无法发布/contact_process.php
- python - 如何在 django 中处理 PUT 请求?(不在 drf 中)