如何创建将收集多个文本框的值的单击事件
本文关键字:文本 事件 单击 何创建 创建 | 更新日期: 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);
}