1

在代码中,我正在动态添加控件(例如,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”类型。

我应该使用更通用的类而不是“控制”吗?如何遍历每个控件并访问所需的值(包括控件的名称)

4

1 回答 1

0

“UIElement”很可能是一个安全的选择。

如果您只对特定类型的元素感兴趣,您还可以考虑使用 Linq 按类类型过滤元素(不要忘记包含“using System.Linq”指令):

foreach (ComboBox combo in EditForm.Children.OfType<ComboBox>())
{
   //...
}
于 2013-02-04T13:59:13.680 回答