c# - 当每个文本框的名称发生变化时如何获取窗口窗体的所有文本框名称
问题描述
当我运行我的表单时,我只想在标签中获取运行时活动表单的所有文本框的名称。
我搜索了很多,但我发现的只是他们没有更改文本框名称的内容。
var allTexboxes = this.Controls.OfType<TextBox>();
var sortedTextBoxes = allTexboxes
.Where(i => String.IsNullOrEmpty(i.Text))
.OrderBy(i => i.Name)
.ToArray();
解决方案
您的代码示例和您想要的解释令人困惑。如果您想要一个表单中所有文本框名称的数组:
string[] GetTexBoxNames()
{
var names =new List<string>();
for each(var c in this.Controls)
{
if(c is TextBox)
{
names.Add(c.name);
}
}
return names.ToArray();
}
短语“this”是指形式。如果您想在表单之外进行此计算,请将该关键字替换为引用它的变量。
您还可以使用 lamda 表达式在单个表达式中获取数组中的所有文本框。
var textBoxNames = this.Controls
.Where(i => i is TextBox)
.ToArray();
您可能想要的另一件事是所有文本框的字典,以它们的名称作为键。除非查找速度很关键,否则您不需要这个,因为您可以使用 lamda 在最终数组中查找文本框,这比字典查找要慢。您可以使用一个简单的 for 循环遍历每个文本框并按名称将它们放入字典中。
如果我弄错了,您可能可以编辑此代码以满足您的目的。请澄清,我也会更新这个答案。
推荐阅读
- c++ - .h 或 .cpp 文件或两者中的抽象类?
- python - 具有多个外键时的突变
- javascript - 如何使用变量 javascript 进行数学运算
- java - 如何在处理 3.4 中使用 java 制作自定义延迟函数?
- django - 在Django中根据用户组成功搜索用户后无法保留表单过滤器值
- laravel - laravel echo 监听套接字?不是变量?
- r - 在 plotly 中更改 geom_text 标签角度
- java - Apache PDFBox 2 波斯语/阿拉伯语文本提取问题与某些字符(错误输出)
- shopify - 如何在shopify中捆绑产品?
- spring - Spring:如何使路由与页面上的 URL 保持同步?