编辑:查看底部的原因是为什么会发生这种情况
我有一个非常奇怪的IndexOutOfRangeException(如标题中所述).当我使用foreach迭代控件的控件(递归FindControl)时会发生这种情况.
然后我想添加一个额外的检查,以确保root.Controls.Count>但是我一直得到异常,而调试器清楚地说Count == 0.
有问题的根是FormView.如果有人有任何想法为什么简单的属性检查抛出IndexOutOfRangeException,请赐教!
异常stackTrace(是的,它是完整的):
at System.ComponentModel.BaseNumberConverter.ConvertFrom(ITypeDescriptorContext context,CultureInfo culture,Object value)
码:
public static Control FindControlRecursive(this Control root,string id) { if (root.ID == id) { return root; } if (root.Controls.Count > 0) { foreach (Control c in root.Controls) { Control t = c.FindControlRecursive(id); if (t != null) { return t; } } } return null; }
编辑:
我试图使用本机FindControl函数,这会引发相同的错误.
具体问题:
foreach如何在本机集合上抛出IndexOutOfRangeException.
EDIT2:
不知怎的,这似乎与使用ObjectDataSource有关,我没有正确填写输入参数,但我没有得到任何错误.也许这会以某种方式破坏FormView(即使用该数据源).我仍然有兴趣知道在访问childcontrols之前如何在没有错误的情况下发生这种情况.
解决方法
而不是Controls.Count,尝试使用
Control.HasControls(),可能会解决问题.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。