通过stackPanel.children genericaly循环(Loop through st

2019-09-28 10:25发布

在代码中,我动态添加控件(如文本框,组合框,标签,等等),我想现在通过循环,并从每个应用(如没有标签)控制得到的值,用户对输入的数据。

        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”。

有没有我应该使用,而不是“控制”的更多泛型类? 我怎样才能通过每个控制回路有机会获得所需要的值(包括控件的名称)

Answer 1:

“的UIElement”是最有可能是安全的选择。

如果你只是一个特定类型的兴趣元素,你也可以考虑使用LINQ to过滤掉类类型的元素(不要忘了包括“使用System.Linq的”指令):

foreach (ComboBox combo in EditForm.Children.OfType<ComboBox>())
{
   //...
}


文章来源: Loop through stackPanel.children genericaly