python - 如何更改依赖于输入和执行生成为 C# 中的字符串的代码的多个标签?
问题描述
我没有人要问,所以我会在这里尝试。
我试图重新创建从 python 到 C# 的 UI 应用程序,以帮助我们的技术人员检查多个服务器上的测试日志文件。
我在 UI 中有很多标签(使用 Visual Studio Win 表单),这些标签向技术人员显示日志是否存在于不同的文件夹中。
为此,我需要大量更改特定标签的 Text 属性。
之前,在 python 中,我创建了从不同输入创建代码字符串的函数(按 for 循环列出作为程序检查服务器和文件夹一一列出)。而不是用“exec”函数执行字符串变量——就这么简单。
例如,在单击“清除”按钮后将每个标签文本属性更改为“........”(类似于清除新搜索)的功能
...
for serv1 in range(len(self.servers)):
for i in range(len(self.log_types)):
clearStringCode = ('self.label_' + str(self.servers[serv1]) + '_' + str(self.log_types[i]) + _v.setText("..........")')
exec(clearStringCode)
我试图在我的 C# 程序中以相同的方式执行此操作,但在 C# 语言中没有 exec 功能:(
示例:我想将标签“labelL1TestStart”的文本以及更多从列表更改为“NotFound”
private void folderNotFound(string area, string server, List<string> types)
{
foreach (string type in types)
{
string labelName = "label" + server + area + type; //creating button name to string
string toExec = labelName + ".Text = \"Not Found\";"; //creating code to string
SomeFunctionToExecuteTheString(toExec);
}
}
我的问题是 - 有没有办法像这样执行在 foreach 中生成的字符串?或者这样做的正确方法是什么..根据输入变量更改标签?我错过了什么吗?我不是真正的程序员。谢谢你的答案。
解决方案
您可以通过使用Control.Controls.Find()
来找到具有指定.Name
属性的控件,然后.Text
直接设置其属性,如下所示:
private void folderNotFound(Control container, string area, string server, List<string> types)
{
foreach (string type in types)
{
string labelName = "label" + server + area + type;
var label = container.Controls.Find(labelName, searchAllChildren: true).FirstOrDefault();
if (label != null)
label.Text = "\"Not found\"";
}
}
Control container
参数是包含要调整文本的标签/按钮的表单。如果该folderNotFound()
方法是在包含标签/按钮的表单中定义的,则可以省略该参数并this
改用:
private void folderNotFound(string area, string server, List<string> types)
{
foreach (string type in types)
{
string labelName = "label" + server + area + type;
var label = this.Controls.Find(labelName, searchAllChildren: true).FirstOrDefault();
if (label != null)
label.Text = "\"Not found\"";
}
}
当然,这一切都假设您已经Name
在设计器中设置了相关标签/按钮的属性。
推荐阅读
- ruby-on-rails - 错误:列“increment_by”不存在 - Postgres 10 和 Rails 5
- terraform - 创建 CacheSecurityGroup 时出错:InvalidParameterValue
- matlab - 如何在 Matlab 中计算日期时间的“外减法”
- angular - Angular 4 输入指令 onSave
- javascript - 如何在 LiveCycle 中添加一年并从日期中减去一天?
- java - 使用 Java 10 的 jaotc 编译单个类
- python - 我在 pygame.Surface() 里面放了什么?
- c# - Google Assistant Dialogflow API V2 webhook ETag 错误
- sql-server - 基于日期的 T-SQL 每日数据备份
- apache-flink - 跨 Flink 数据流的多个步骤的节点内的任务本地处理