seguidor de joelonsoftware desde hace mucho tiempo, 1er póster de stackoverflow.Acceder a la propiedad de texto del control después del formulario principal Dispose() 'd?
Quiero saber "cómo con seguridad" Puedo hacer lo siguiente (C#):
Form formDlg = new Form();
TextBox box = new TextBox();
formDlg.Controls.Add(box);
formDlg.ShowDialog();
formDlg.Dispose();
string sUserEntered = box.Text; // After parent Dispose'd!
En la práctica, esto (al parecer) que funciona, porque cuadro (como control) tiene una private texto campo (una cadena) que utiliza para implementar su propiedad Text después de que se destruye su identificador de ventana.
No me satisfará la respuesta general de que "no se puede acceder a un objeto una vez que está Dispuesto" porque (1) no encuentro ninguna prohibición general en los documentos de MS, (2) estoy no acceder a un recurso no administrado, y (3) este código no arroja ninguna excepción (incluida ObjectDisposedException).
Me gustaría hacer esto para poder crear y usar un método combinado "ShowAndDispose" para reducir el riesgo de olvidarme de llamar siempre a Dispose() después de ShowDialog().
Para complicar, el comportamiento cambia en el depurador. Si me rompo antes de tirar(); luego Quick Watch box y profundizar en su Control clase base; luego pasa el paso Dispose(); luego box.Text regresa ""! En el cuadro de otros escenarios, Text devuelve el texto ingresado por el usuario.
¿Por qué forzarías un Dispose en el formulario? Especialmente cuando no estás accediendo a recursos no administrados. Deje que Framework/GC se encargue de eso. EDITAR: Tengo la sensación de que tienes una situación mucho más complicada que el código anterior. – Zyphrax
No solo eso, ¿por qué acceder a un cuadro de texto que está en un formulario que está dispuesto() ...? ¿Por qué querrías hacer eso? No tiene sentido para mi? Eso es como punteros en C, puedes malloc un puntero, hacer algunas cosas con él, luego liberarlo, luego desreferenciar el puntero después de ser liberado! – t0mm13b
Zyphrax: un formulario contiene muchos recursos no administrados, 1 por control. –