我是 C# 和 Windows 窗体的初学者。我想使用 Controls.ControlsCollection.Find 在表单中查找多个文本框(存在于组框中)。 (请注意,组框是在运行时使用表单中的按钮动态加载的)。
我使用 for 循环将控件 (TextBox) 的名称更改为 find(Tb{a})。 然后我使用 foreach 循环访问数组中的控件。
我尝试使用 for 循环来改变文本框的名称。我期待它用这些文本框创建一个控件数组。稍后,我会将值转换为 float 并将其添加到 'L'
private float FindTextBoxes()
{
for (int i=1; i < a+1; i=i+2)
{
Control[] textboxes = this.Controls.Find($"Tb{i}",true);
}
float L = 0;
foreach (Control ctrl in textboxes)
{
if (ctrl.GetType() == typeof(TextBox))
{
L = L + float.Parse(((TextBox)ctrl).Text);
}
}
return L;
}
我得到的错误是: 错误 CS0103 当前上下文中不存在名称“文本框”。 如何解决这个问题?
感谢所有帮助。 谢谢。
变量必须在循环外定义。
private float FindTextBoxes()
{
Control[] textboxes
for (int i=1; i < a+1; i=i+2)
{
textboxes = this.Controls.Find($"Tb{i}",true).OfType<TextBox>();
}
float L = 0;
foreach (Control ctrl in textboxes)
{
L = L + float.Parse(((TextBox)ctrl).Text);
}
return L;
}