Foros del Web » Programación para mayores de 30 ;) » .NET »

Lentitud en el repintado de un Form Hijo (MDI)

Estas en el tema de Lentitud en el repintado de un Form Hijo (MDI) en el foro de .NET en Foros del Web. Hola que tal, despues de tanto tiempo he regresado con la siguiente duda o problema, segun se vea!!!. Ok la cuestion es la siguiente, en ...
  #1 (permalink)  
Antiguo 05/09/2010, 13:31
 
Fecha de Ingreso: febrero-2010
Mensajes: 35
Antigüedad: 14 años, 1 mes
Puntos: 1
Sonrisa Lentitud en el repintado de un Form Hijo (MDI)

Hola que tal, despues de tanto tiempo he regresado con la siguiente duda o problema, segun se vea!!!.

Ok la cuestion es la siguiente, en mi sistema maneja MDI, obviamente hay un form padre el cual invoca a los demas form hijos, bueno, el sistema funciona a la perfeccion y no he tenido ningun problema, la cuestion es que por ejemplo, cuando unicia el form padre no invoca ningun form hijo (por que asi se programo), cuando mando invocar a cualquier Form hijo, este se abre inmediatamente y se repinta al instante, si tengo activo un form hijo y quiero abrir otro, lo que hago es cerrar el form activo y despues muestro el form hijo elegido, pero aqui es donde viene la dificultad, ya que en el proceso de cierre y apertura del nuevo form, el sistema tarda bastantes segundos en repintar los componentes del nuevo form hijo,y asi pasa con todos los demas, tengo activo uno y quiero abrir otro, el repintado se vuelve muy lento y no se a que se deba, alguien me podria ayudar para que no me pase esto!!!!

Ese es mi unico problema, el repintado de un nuevo form hijo cuando se cierra el form activo.

Ojala alguien me aconseje y se pueda solucionar esto, de antemano gracias..
  #2 (permalink)  
Antiguo 07/09/2010, 18:06
 
Fecha de Ingreso: abril-2010
Mensajes: 17
Antigüedad: 14 años
Puntos: 0
Respuesta: Lentitud en el repintado de un Form Hijo (MDI)

hola chusterboy, en una aplicacion MDI debes de tener una barra de menus la cual te permitira mostrar los form hijos, si es asi en el menu deberas programar de que manera quieres que te muestre el form hijo.
mira yo lo hago de esta forma a ver si te parece:

inserto un menustrip y supongamos que el menu se llama prueba, luego mando a llamar el formulario de la siguiente forma;
friend frm as form1
ahora dentro del menu prueba dando doble clic sobre el escribes esto
if frm is nothing then
frm=new form1
frm.mdiparent=me
frm.show()
else
frm.activate()
end if

ahora en el formulario hijo form1 dando doble clic te manda al evento load, buscas el evento formclosing y dentro de este escribes lo siguiente:
ctype(me.MdiParent,mdi).frm=nothing
con esto le indicas al formulario hijo que si esta activo dentro de nuestro MDI que se muestre
espero te ayude.
saludos
  #3 (permalink)  
Antiguo 08/09/2010, 22:33
 
Fecha de Ingreso: febrero-2010
Mensajes: 35
Antigüedad: 14 años, 1 mes
Puntos: 1
Respuesta: Lentitud en el repintado de un Form Hijo (MDI)

bueno, antes que nada gracias por tu contestacion y por tus ideas, lamentablemente no entiendo muy bien la siguiente parte:

ctype(me.MdiParent,mdi).frm=nothing

dices q la ponga en el metodo closing del Form hijo, pero la variable mdi que representa, ahora el cast lo haces para convertirlo a Form y la variable frm se supone q es la instancia q usaste para mostrar el mdi hijo?, pero como puedo compartir esa variable si estan en clases diferentes?

mira yo lo hago en c# y lo hago de la siguiente manera:

cuando quiero abrir un form hijo, primero checo que haya forms activos, de ser asi los cierro y despues muestro el form hijo:

private void MostrarFrameEmpleados()
{
CerrarFormulario();
Form_Empleados frmEmpleados = new Form_Empleados();
frmEmpleados.MdiParent = this;
frmEmpleados.WindowState = FormWindowState.Maximized;
frmEmpleados.Show();
}

private void MostrarFrameProductos()
{
CerrarFormulario();
Form_Productos frmProductos = new Form_Productos();
frmProductos.MdiParent = this;
frmProductos.WindowState = FormWindowState.Maximized;
frmProductos.Show();
}

y este es el metodo para cerrar los formularios:

private void CerrarFormulario()
{
try
{
Form activo = new Form();
activo = this.ActiveMdiChild;
activo.Close();

}
catch (Exception) { }
}

sin embargo como comente, al hacerlo de esta manera y tener un form hijo activo y querer abrir otro, al momento de abrir el nuevo y realizar el repintado de los elementos del mismo, este tarda unos segundos y despues lo muestra, como podria optimizar esto?

de antemamo gracias
  #4 (permalink)  
Antiguo 10/09/2010, 19:01
 
Fecha de Ingreso: abril-2010
Mensajes: 17
Antigüedad: 14 años
Puntos: 0
Respuesta: Lentitud en el repintado de un Form Hijo (MDI)

creo no estamos en sintonia, tu lo haces en c# y el codigo q te presente esta en vb, pero aclaro el MDI que dices es un formulario de tipo MDI que va a contener los menus, entonces mdi es el nombre del Formulario MDI.
saludos

Etiquetas: lentitud, mdi, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:46.