每个文本框的名称更改时如何获取Windows窗体的所有文本框名称

时间:2019-06-26 14:55:11

标签: c# winforms

运行表单时,我只想在运行时在标签中获取活动表单的所有文本框的名称。

我进行了很多搜索,但发现的全部内容是他们没有更改文本框的名称。

var allTexboxes = this.Controls.OfType<TextBox>();
var sortedTextBoxes = allTexboxes
                     .Where(i => String.IsNullOrEmpty(i.Text))
                     .OrderBy(i => i.Name)
                     .ToArray();

1 个答案:

答案 0 :(得分:0)

您的代码示例和您想要的解释令人困惑。如果要在表单中包含所有文本框名称的数组:

<tr>

短语“ this”是指表格。如果您想从表格的另一端进行此计算,请将该关键字替换为引用该关键字的变量。

您还可以使用lamda表达式在单个表达式中获取数组中的所有文本框。

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();
}

您可能想要的另一件事是所有文本框的字典,其名称为键。除非查找速度至关重要,否则不需要此操作,因为您可以使用lamda查找最终数组中的文本框,该文本框的速度比字典查找慢。您可以使用简单的for循环遍历每个文本框,然后按名称将其放入词典中。

如果我弄错了,您可能可以编辑此代码以适合您的目的。请澄清,我也将更新此答案。