Мои элементы управления размещаются неправильно?

У меня есть следующий метод:

    public static void Disposer(Control.ControlCollection controls)
    {
        foreach (Control c in controls)
        {
            if (c.HasChildren)
                Disposer(c.Controls);

            if ((c is UltraNumericEditor)
                || (c is UltraComboEditor)
                || (c is UltraTextEditor)
                || (c is UltraDateTimeEditor)
                || (c is UltraCheckEditor)
                || (c is UltraGrid)
                || (c is UltraStatusBar))
            {
                c.Dispose();
                var x = c.IsDiposed; // this is true!
            }

        }
    }

Затем я вызвал его так:

   [STAThread]
    static void Main()
    {
        Test forma = new Test();
        forma.Controls.Add(new UltraStatusBar());
        forma.Controls.Add(new UltraStatusBar());
        forma.Controls.Add(new UltraNumericEditor());
        forma.Controls.Add(new UltraComboEditor());
        forma.Controls.Add(new UltraTextEditor());
        forma.Controls.Add(new UltraTextEditor());
        forma.Controls.Add(new UltraDateTimeEditor());
        forma.Controls.Add(new UltraTimeZoneEditor());
        forma.Controls.Add(new UltraGrid());

        Disposer(forma.Controls);

        foreach (Control control in forma.Controls)
        {
            if (control.IsDisposed)//this is false now!
            {
                Debug.Write(control.Name + " was disposed");
            }
        }
    }

Мой вопрос в том, почему внутри моего метода Disposer мои элементы управления удаляются, но когда я проверяю, основной метод возвращает false? Кстати, объект «Тест» - это простой класс, наследуемый от UserControl. Спасибо, привет.

5
задан Joe White 23 June 2011 в 17:50
поделиться