在代码中我动态添加控件(例如TextBox,ComboBox,Label等),我现在想要循环,并从用户输入数据的每个适用(例如不是标签)控件中获取值。
foreach (Control control in EditForm.Children)
{
values = new List<string>();
fieldName = control.Name;
if (control is ComboBox)
{
ComboBox cmb = control as ComboBox;
string value = cmb.SelectedValue.ToString();
}
}
问题是我在
运行时遇到错误无法将'System.Windows.Controls.TextBlock'类型的对象强制转换为 输入'System.Windows.Controls.Control'。
我应该使用更通用的类而不是'Control'吗?如何遍历每个控件并访问所需的值(包括控件的名称)
答案 0 :(得分:0)
“UIElement”很可能是一个安全的选择。
如果您只对特定类型的元素感兴趣,您还可以考虑使用Linq按类类型过滤掉元素(不要忘记包含“using System.Linq”指令):
foreach (ComboBox combo in EditForm.Children.OfType<ComboBox>())
{
//...
}