У меня есть следующий метод:
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. Спасибо, привет.