Cuando creo un formulario, el código generado automáticamente no incluye un método de eliminación anulado. ¿Eso significa que Dispose no está siendo llamado para todos los controles en la forma?¿Los controles de llamada de Form.Dispose() están dentro de Dispose()?
Respuesta
Cuando llame al Dispose
en el formulario, llamará al Dispose
para cada control en su colección Controls
. Esos controles a su vez harán lo mismo, por lo que al final todos los controles 'Dispose
método deberían haber sido invocados. Tenga en cuenta que esto no se basa en si los controles están presentes en el diseñador o no; se basa en las instancias de control que se encuentran en la colección Controls
del formulario en el momento en que se realiza la llamada al Dispose
.
El único caso en el que pude ver que esto no sucedería es si usted crea algún control de contenedor usted mismo y reemplaza Dispose
sin propagar la llamada a la clase base ni itera sobre los controles contenidos y llama al Dispose
.
Debería. Es posible que deba buscar en el archivo YourForm.designer.cs. Se parece a esto:
protected override void Dispose(bool disposing)
{
if(disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing)
}
La llamada base.Dispose();
se hará cargo de la limpieza de los controles agregados al Formulario.
Eso no es del todo cierto; el campo 'components' es' null' a menos que tenga componentes que no sean UI (como 'Timer',' HelpProvider' o 'BackgroundWorker') en el formulario. 'components' maneja la eliminación de esos componentes. No * invoca deshacerse de otros controles como botones, cuadros de texto, etc. –
Exactamente, los controles del formulario están realmente eliminados mediante la llamada a 'base.Dispose()', es decir, dentro de 'Control.Dispose()'. En realidad, se está limpiando mucho más, como verán al buscar 'Form.Dispose()' con Reflector. –
Actualizaciones, gracias por los comentarios – SwDevMan81
- 1. C# Form.Close vs Form.Dispose
- 2. F #: ¿Desechar los recursos que están dentro de un cierre?
- 3. ¿Cómo acceder a los controles que están dentro de una pestaña TabControl?
- 4. ¿Cómo elimino todos los controles en un panel o formulario a la VEZ? C#
- 5. Deshabilitar todos los controles dentro de div en asp.net
- 6. Todos los controles son nulos dentro de usercontrol
- 7. ¿Mis controles no están siendo eliminados correctamente?
- 8. Reemplazar todos los espacios que están dentro de llaves
- 9. Llamada de función dentro del código XAML?
- 10. ¿Controles dinámicos creados dentro de UpdatePanel?
- 11. Controles que interactúan dentro de una cuadrícula
- 12. ¿Por qué los controles e InfoWindow de Google Maps están rotos/sesgados al usar jQuery Mobile?
- 13. Los controles del iPod mini están deshabilitados cuando se configuran ciertos parámetros de sesión de audio
- 14. ¿Dónde están los estilos \ controles de iOS de aspecto estándar en Delphi XE2?
- 15. Los controles de contenido deben ser controles de nivel superior
- 16. Llamada Jquery ajax dentro de cada bucle
- 17. Decodificador WPF con controles dentro
- 18. Limpieza adecuada de los controles de usuario de WPF
- 19. ¿Cuándo debo usar dispose() en los gráficos?
- 20. Los controles de datos no deberían actualizarse si no están visibles
- 21. ¿WPF tiene controles equivalentes para todos los controles de Winforms?
- 22. Uso excesivo de ASP.Net de los controles de usuario
- 23. ¿Puedo mostrar los controles de usuario de Windows dentro de IE8
- 24. Cuál es la mejor aplicación de .dispose()
- 25. procedimiento almacenado llamada oráculo dentro de seleccione
- 26. Controles de centrado dentro de un formulario en .NET (Winforms)?
- 27. Rieles: método de llamada dentro del modelo
- 28. ASP.NET MVP - Utilizando los controles de usuario
- 29. FileSystemWatcher Dispose call cuelga
- 30. ¿Están seguros los clientes de JAX-WS?
Sí. Los componentes se hacen de forma diferente, eso es de lo que se ocupa el método Dispose() generado automáticamente. Quitar un control de la colección Controls y no desecharlo es una buena manera de filtrar. –