如何创建将收集多个文本框的值的单击事件

本文关键字:文本 事件 单击 何创建 创建 | 更新日期: 2023-09-27 18:04:45

我有一个windows窗体(c#)与几个文本框。用户将在每个文本框(可能有28个文本框)中输入一系列测量值。我想创建一个点击事件(cmdCalculate),它将简单地收集所有已输入的值,然后将它们以参数的形式发送给用于各种计算的方法,以避免直接从表单中使用值完成所有计算。

语法有问题…当我在点击事件中放置所有计算代码时,一切都很好,但我被建议(由经验丰富的编码员)最好收集值并通过过程/方法进行计算……

如何创建将收集多个文本框的值的单击事件

创建这样一个方法:

private List<string> CombineValuesFromTextBoxes()
{
    var values = new List<string>();
    var allTextBoxes = GetChildControls<TextBox>(this);
    foreach (TextBox tb in allTextBoxes)
    {
        values.Add(textBox.Text);
    }
    return values;
}

或者你可以使用LINQ:

private List<string> CombineValuesFromTextBoxes()
{
    return GetChildControls<TextBox>(this).Select(childControl => childControl.Text).ToList();
}

要枚举所有没有硬编码的文本框,请使用此方法:

public static IEnumerable<TControl> GetChildControls<TControl>(Control control) where TControl : Control
    {
        var children = (control.Controls != null) ? control.Controls.OfType<TControl>() : Enumerable.Empty<TControl>();
        return children.SelectMany(GetChildControls<TControl>).Concat(children);
    }