【发布时间】:2011-05-20 03:16:32
【问题描述】:
添加时出现“值不在预期范围内的异常” 孩子们堆叠面板。即使在添加到 stackpanel 之前 myStackPanel.Children.Count = 0 也会发生这种情况。知道为什么吗?
void func()
{
myStackPanel.Children.Clear();
List<Docs> lDocs = docDictionary[ID];
foreach (Docs lDoc in lDocs)
{
...
Border myTextborder = new Border();
myTextborder.BorderThickness = new Thickness(1);
myTextborder.Name = lDoc.Name;
...
myStackPanel.Children.Add(myTextborder); //Getting Value does not fall within the expected range exception here
}
}
func() 被多次调用。我读到当我们尝试添加具有相同名称的孩子时会发生错误。但在我的情况下,我正在清除堆栈面板,即使每次调用 func() 时 foreach 循环只运行一次,也会发生错误
【问题讨论】:
-
如果你把
myTextborder.Name这一行注释掉怎么办? -
另外,您在示例中用“...”替换的代码可能是相关的。
-
如果我评论它就不会发生错误。但是对于每个 func 调用,我都在清除堆栈面板。为什么会发生这种情况。上一次 func() 调用中的 myTextBorder.Name 可能重复,而不是当前调用。当我每次清除时,这有什么关系。
-
@Josh 在 ... 部分对 myStackPanel 或 myText 边框的唯一更改是 myTextborder.Child = myControl;
-
如果在注释掉设置名称的行时没有发生错误,那么您可能设置了无效的名称。正如我在下面的回答中所述,您必须确保设置了有效的标识符名称。因此,例如“myBorder”会起作用,但“My Border”不会。
标签: c# silverlight