Newsgrupos.com  

Retroceder   Newsgrupos.com > Forum > Newsgroup microsoft.public.es.* 1 Foro > Newsgroup microsoft.public.es.dotnet.vb
Registrarse Preguntas Frecuentes Lista de Foreros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




Respuesta
 
LinkBack Herramientas Desplegado
  #1 (permalink)  
Antiguo 08-08-2008, 00:43:01
Manolo Zepeda
 
Mensajes: n/a
Predeterminado Método Dispose

Que tal amigos.

Al momento de cerrar un Formulario con el Método Dispose(True) se muestra un
pequeño parpadeo de otro form, o si tengo abierto una pestaña del Explorador
de Windows también se muestra, pero es un efecto muy rápido, pero muy
molesto, hay alguna forma de evitarlo?

Saludos()
Responder Con Cita
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Newsgrupos.com
Standard Sponsored Links

  #2 (permalink)  
Antiguo 08-08-2008, 01:57:48
Federico A. Colli
 
Mensajes: n/a
Predeterminado Re: Método Dispose

Hola, no será un tema de la tarjeta de video? posiblemente uses una
onboard o vieja, me parece que puede venir por este lado.

Saludos
--
AUS Federico A. Colli

On 7 ago, 21:43, Manolo Zepeda
<ManoloZep...***discussions.microsoft.com> wrote:
> Que tal amigos.
>
> Al momento de cerrar un Formulario con el Método Dispose(True) se muestra un
> pequeño parpadeo de otro form, o si tengo abierto una pestaña del Explorador
> de Windows también se muestra, pero es un efecto muy rápido, pero muy
> molesto, hay alguna forma de evitarlo?
>
> Saludos()


Responder Con Cita
  #3 (permalink)  
Antiguo 08-08-2008, 17:58:02
Manolo Zepeda
 
Mensajes: n/a
Predeterminado Re: Método Dispose


Que tal Federico.
Tengo una tarjeta de video Nvidia a 64,y el problema se presenta en todos
los equipos.

Que otra cosa puedo checar?

Saludos
Responder Con Cita
  #4 (permalink)  
Antiguo 08-08-2008, 18:29:29
SoftJaén
 
Mensajes: n/a
Predeterminado Re: Método Dispose

"Manolo Zepeda" escribió:
>
> Al momento de cerrar un Formulario con el Método Dispose(True) se muestra
> un
> pequeño parpadeo de otro form, o si tengo abierto una pestaña del
> Explorador
> de Windows también se muestra, pero es un efecto muy rápido, pero muy
> molesto, hay alguna forma de evitarlo?


Realmente ignoro el motivo para que se muestra el parpadeo que nos comentas
cuando llamas al método «Dispose». Yo, desde luego no lo puedo reproducir.

¿Estás ejecutando algún código en el evento «Dispose» del formulario? ¿El
formulario lo muestras con el método «Show» (no modal) o con el método
«ShowDialog» (formulario modal)?

--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.

Responder Con Cita
  #5 (permalink)  
Antiguo 08-08-2008, 20:03:01
Manolo Zepeda
 
Mensajes: n/a
Predeterminado Re: Método Dispose


Que tal Enrique.
Gracias por la atención.
Se me olvidava comentarles que tengo un form MDI(Formulario Principal que es
donde mando llamar al form Venta_Caja)

Private Sub F_Venta_Caja_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles F_Venta_Caja.Click

Venta_Caja.ShowInTaskbar = False
Venta_Caja.ShowDialog(Me)

End Sub

Y el código que utilizo para cerrar es el sig:

Protected Overrides Function ProcessCmdKey(ByRef msg As
System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As
Boolean

If keyData = Keys.Escape Then
Me.Close()
end if
End Sub

Private Sub Venta_Caja_FormClosed(ByVal sender As Object, ByVal e As
System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
GC.Collect()
GC.SuppressFinalize(Me)
Me.Dispose(True)
End Sub

Yo tampoco entiendo porque es ese efecto, si abro directamente los Form sin
depender del MDI no pasa nada,pero el efecto se ve cuando los abro del MDI.

Saludos y Gracias
Responder Con Cita
  #6 (permalink)  
Antiguo 09-08-2008, 06:27:21
SoftJaén
 
Mensajes: n/a
Predeterminado Re: Método Dispose

> Al momento de cerrar un Formulario con el Método Dispose(True) se muestra
> un pequeño parpadeo de otro form, o si tengo abierto una pestaña del
> Explorador de Windows también se muestra...


Leyendo de nuevo tu primer mensaje, observo que dices que se muestra un
pequeño parpadeo si tienes abierta una pestaña del Explorador de Windows. He
tratado de hacer lo mismo, y he abierto el Explorador de Windows, y
efectivamente se produce un ligero parpadeo cuando una vez que se encuentra
en ejecución la aplicación, le paso el foco al Explorador de Windows y
devuelvo de nuevo el foco a la aplicación. Cuando abro y cierro el
formulario modal es cuando se produce el parpadeo en la ventana del
Explorador de Windows. Por supuesto, para que se produzca esta situación,
tanto la aplicación como la ventana del Explorador de Windows no deben de
estar maximizadas.

La verdad es que no sabría explicarte el motivo de ese comportamiento, que
he comprobado que solamente se produce cuando desde el formulario modal se
llama a su método «Dispose». Pero también he comprobado que tal
comportamiento se produce cuando llamas al formulario «Venta_Caja»
utilizando la instancia por defecto de éste. Si en lugar de utilizar la
instancia por defecto del formulario, creo e instancio una variable tipo
«Form» que apunte al formulario que deseo mostrar, no se produce ese ligero
parpadeo del que estamos hablando.

Desde el formulario principal, llama al formulario «Venta_Caja» de la
siguiente manera, que a mi entender, es la manera correcta de llamar a
cualquier formulario, sea éste un formulario modal o no modal:

Private Sub F_Venta_Caja_Click( ... )

' Declaramos una variable que referencia al formulario
'
Dim frm As New Venta_Caja

frm.ShowInTaskbar = False
frm.ShowDialog(Me)

' Una vez cerrado el formulario es cuando lo
' destruimos.
'
frm.Dispose

End Sub

Si muestro el formulario de ésta manera, ya no observo ningún parpadeo en la
ventana del Explorador de Windows.

Como estamos hablando de mostrar un formulario «modal», cuando se cierre el
formulario Venta_Caja el código regresada al formulario principal y se
llamará al método «Dispose» del formulario que se acaba de cerrar, por lo
que deberás de eliminar todo el código que se ejecuta en el evento
«FormClosed» del formulario Venta_Caja.

En cuanto a llamar al método «Collect» del objeto GC, no encuentro un motivo
aparente para que efectúes una recolección de elementos no utilizados,
porque de ésto se encargará el runtime de .NET cuando él lo crea oportuno.
Ahora bien, si tienes un buen motivo que justifique dicha llamada, entonces
me parece muy bien que llames al "basurero". :-)

Si lo crees oportuno, te aconsejaría que le echaras un vistazo al siguiente
artículo:

Abrir y cerrar formularios con Visual Basic .net
http://mvp-access.es/softjaen/vbnet/...vbnetfor02.htm

Ahí explico los entresijos existentes cuando se abre y se cierre un objeto
Form.

--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.

Responder Con Cita
  #7 (permalink)  
Antiguo 09-08-2008, 17:49:01
Manolo Zepeda
 
Mensajes: n/a
Predeterminado Re: Método Dispose


Que tal Enrique.
Agradecido de antemano por tu valiosa colaboración en mi mensaje.

Acabo de leer tu artÃ***culo publicado y me parece excelente, acabo de hacer lo
que me indicas de hacer una instancia de un Formulario para poder abrirse
desde el principal.

Tengo los sig. formularios:
1- Menu_Principal
2. Venta_Caja
3. Busqueda_Prod

En la primer instancia de abrir el primer formulario de Venta_Caja no tengo
ningún problema(AsÃ*** como lo indicaste)ya que lo abro directamente de
Menu_Principal, después de abrir el form Venta_Caja tengo que hacer una
instancia a otro form(Busqueda_Prod) que es donde se búsca el artÃ***culo y
muestro los datos en un DataGridView de Venta_Caja.

En el form Busqueda_Prod tengo que hacer referencia a varios forms al
momento de seleccionar los datos y checar cual es el que esta visible, y es
ahi donde no se como hacer para hacer referencia al form Venta_Caja, ya que
es una instancia solamente y al momento de ejecutar el código me dice que no
esta visible.

If Venta_Caja.Visible then

ElseIF Productos.Visible then

End IF

Que puedo hacer en este caso?
Saludos


Responder Con Cita
  #8 (permalink)  
Antiguo 10-08-2008, 05:49:00
SoftJaén
 
Mensajes: n/a
Predeterminado Re: Método Dispose

"Manolo Zepeda" escribió:

> Tengo los sig. formularios:
> 1- Menu_Principal
> 2. Venta_Caja
> 3. Busqueda_Prod
>
> En la primer instancia de abrir el primer formulario de Venta_Caja no
> tengo
> ningún problema(Así como lo indicaste)ya que lo abro directamente de
> Menu_Principal, después de abrir el form Venta_Caja tengo que hacer una
> instancia a otro form(Busqueda_Prod) que es donde se búsca el artículo y
> muestro los datos en un DataGridView de Venta_Caja.
>
> En el form Busqueda_Prod tengo que hacer referencia a varios forms al
> momento de seleccionar los datos y checar cual es el que esta visible, y
> es
> ahi donde no se como hacer para hacer referencia al form Venta_Caja, ya
> que
> es una instancia solamente y al momento de ejecutar el código me dice que
> no
> esta visible.


Si estás utilizando Visual Basic 2005 ó 2008, puedes utilizar la propiedad
«OpenForms» del objeto «MyApplication» para saber si un formulario concreto
se encuentra abierto actualmente.

Por ejemplo, en el formulario de búsqueda podrías tener la siguiente función
que te devolverá la referencia del formulario que le pases en el argumento:

Private Function ReferenciarForm(ByVal formName As String) As Form

For Each frm As Form In My.Application.OpenForms

If frm.Name.ToLower = formName.ToLower Then
Return frm
End If

Next

' El formulario no se encuentra abierto
Return Nothing

End Function

Simplemente llamarías a la función pasándole el nombre del formulario que
deseas referenciar:

Dim frm As Form = ReferenciarForm("Form223")

If frm IsNot Nothing Then
' Seleccionamos el formulario
frm.Select()
End If

Te comento que si el formulario «Busqueda_Prod» es un formulario «modal», el
formulario 223 quedará seleccionado si se encuentra abierto (lo podrás
observas porque el foco pasa a dicho formulario), pero realmente no podrás
hacer nada con él hasta que no cierres todos los formularios modales que
tengas abiertos. Pero si todos los formularios son «no modales», entonces no
hay ningún problema para que una vez seleccionado el formulario puedas hacer
clic en cualqier botón que se encuentra incluido en el mismo, por ejemplo.
:-)

--
Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.

Responder Con Cita
  #9 (permalink)  
Antiguo 11-08-2008, 16:51:01
Manolo Zepeda
 
Mensajes: n/a
Predeterminado Re: Método Dispose


Enrique muy agradecido por tu valiosa colaboración, ya hice como me lo
indicaste y todo funcionó a la perfección.
Solo era cuestión de hacerle unos ajustes.

Te agradezco mucho y que tengas buen dÃ***a.
Responder Con Cita
 
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado






Powered by: vBulletin, Versión 3.6.8
Derechos de Autor ©2000 - 2008, Jelsoft Enterprises Ltd.

LinkBacks Enabled by vBSEO 3.1.0 © 2007, Crawlability, Inc.