<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
寫了個程序,用來從一個panel中將我自己寫的user control移動到另外一個panel,如下
private void MoveViewers(InfoList sourceList, InfoList targetList)
{
foreach (object viewer in sourceList.Controls)
{
if (((InfoViewer) viewer).Checker.Checked)
targetList.Controls.Add((InfoViewer) viewer);
}
}
誰知道,居然出錯,鬱悶,想了想,應該是Controls在變造成foreach找不到對象了。
修改如下:
private void MoveViewers(InfoList sourceList, InfoList targetList)
{
Queue queqe = new Queue();
foreach (object viewer in sourceList.Controls)
{
if (((InfoViewer) viewer).Checker.Checked)
queqe.Enqueue(viewer);
}
while (queqe.Count != 0)
{
targetList.Controls.Add((InfoViewer) queqe.Dequeue());
}
}
BUG修復,已經好用了。
感嘆,OOP一不小心,一個想當然的想法就會造成一個BUG,太恐怖了。