Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: z3nth10n en 30 Mayo 2013, 19:52 pm



Título: Problema al mostrar el Form Parent
Publicado por: z3nth10n en 30 Mayo 2013, 19:52 pm
Hola, pues, tengo un problema, he estado probando a mostrar un Form que previamente he ocultado (con un Me.Hide()), pero no me deja...

Cuando le doy al boton de mostrar (Comando frmMain.Show())
Se muestra el frmMain por unos segundos y se vuelve a ocultar...

Un saludo.


Título: Re: Problema al mostrar el Form Parent
Publicado por: El Benjo en 30 Mayo 2013, 23:52 pm
En vez del método Hide() intenta cambiar la propiedad "Visible" a falso y dinos si te sigue dando el mismo problema.

En caso de que el problema persista, verifica si tienes algún código en el evento "VisibleChanged()" del formulario y que sea esta la razón por la que desaparee después de un tiempo.

(http://www.benjasoft.is-great.net/Imagenes/Iconos/B3_3.ico)


Título: Re: Problema al mostrar el Form Parent
Publicado por: XresH en 31 Mayo 2013, 00:47 am
Hola, pues, tengo un problema, he estado probando a mostrar un Form que previamente he ocultado (con un Me.Hide()), pero no me deja...

Cuando le doy al boton de mostrar (Comando frmMain.Show())
Se muestra el frmMain por unos segundos y se vuelve a ocultar...

Un saludo.

Usá el comando Visible como dice el colega, pero si utilizas Hide o no para ocultarlo no importa, una vez el Form esté oculto, para mostrarlo otra vez hacelo aparecer con un Visible = True

Saludos.


Título: Re: Problema al mostrar el Form Parent
Publicado por: z3nth10n en 31 Mayo 2013, 07:45 am
No me va...
Ninguna de las dos formas, y no encontré lo de VisibledChaged()


Título: Re: Problema al mostrar el Form Parent
Publicado por: XresH en 31 Mayo 2013, 08:22 am
Si podés pasa el code de lo que tenés para ayudarte, sino enviame por MP por si no lo querés hacer público porque me late a que algo está interfiriendo y provoca el cierre.

Saludos.


Título: Re: Problema al mostrar el Form Parent
Publicado por: Eleкtro en 31 Mayo 2013, 09:32 am
Tienes algún tipo de código conflictivo en el form principal o el form secundario, un show/hide debería funcionar sin problemas, pero yo no te recomiendo que uses la propiedad visible ni que uses el método show/hide.

...En lugar de eso usa "Dispose" para liberar todos los recursos utilizados por el form secundario, así se pierde "el código conflictivo" y lo instancias desde cero la próxima vez al usar "Show".

Código:
Form2.Show()
Form2.Dispose()
Form2.Show()

Si eso te sigue sin funcionar, chungo... habría que fijarse entonces en el form principal.

Saludos!


Título: Re: Problema al mostrar el Form Parent
Publicado por: z3nth10n en 31 Mayo 2013, 15:14 pm
Soy un poco novato así que me tendrás que decir exactamente como lo debo hacer...

He probado con Me.Hide() y luego Me.Dispose() (en ambos forms)
Pero sigue igual...

Como es?



He quitado el Hide, y he puesto el Dispose y luego el Show, pero se cierra la app antes de que ocurra nada...


Título: Re: Problema al mostrar el Form Parent
Publicado por: Eleкtro en 31 Mayo 2013, 15:40 pm
He probado con Me.Hide() y luego Me.Dispose() (en ambos forms)

He quitado el Hide, y he puesto el Dispose y luego el Show, pero se cierra la app antes de que ocurra nada...

Vamos a ver Seazoux, ¿me quieres decir que has intentado disposar el form principal?, ¿pero has entendido algo de lo que dije antes? xD, si liberas el form principal de la memória, por supuesto que se va a "cerrar" la app.

Como ya te dije por MP (no sé si ya lo habrás intentado) solo tienes que reemplazar el ".Hide" por ".Dispose":

Form2.Show() ' Para mostrar el form
form2.Hide() ' Para ocultarlo
Form2.Dispose() ' Para liberarlo, en lugar de ocultarlo.

Donde tengas colocado "form2.hide" pues pones "form2.dispose", o "me.dispose" (En un form secundario)


Título: Re: Problema al mostrar el Form Parent
Publicado por: z3nth10n en 31 Mayo 2013, 15:42 pm
Sigue pasando lo mismo... Ahora tarda unos cuantos milisegundos mas :(


Título: Re: Problema al mostrar el Form Parent
Publicado por: Eleкtro en 31 Mayo 2013, 15:47 pm
pásame el source


Título: Re: Problema al mostrar el Form Parent
Publicado por: z3nth10n en 31 Mayo 2013, 15:48 pm
pásame el source

El Unread topics está bug.


Título: Re: Problema al mostrar el Form Parent
Publicado por: Eleкtro en 31 Mayo 2013, 17:44 pm
Código
  1.  Private Sub frmMain_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
  2.         Application.Exit()
  3.    End Sub

Eso está mal, debes usar el evento FormClosing, cuando el form se ha cerrado del todo ya no ocurre náh.

Aunque meter un "application.exit" en un "formclosing" tampoco sirve para nada, es decir, no estarías agregando ninguna inastrucción nueva al sub, en lugar de eso y si prefieres usa "End" (pero lee para que sirve).





El error, como yo supuse (código conflictivo), lo tienes aquí:

Código
  1.    Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
  2.        PictureBox1.Image = Image.FromFile(".\Art\rojo1.png")
  3.        Timer1.Start()
  4.    End Sub
  5.  
  6.    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  7.        frmMinecraft.Show()
  8.        Me.Hide()
  9.    End Sub

Al pulsar el botón rojo inicias un timer que a los 50 ms oculta el form principal, cuando le das al botón "patrás" para mostrar de nuevo el form principal, ese timer sigue en marcha.

¿Como solucionarlo?, no te lo iba a decir, pero es que no sé pa que coño tienes un timer para mostrar un Form XDDD.


Código
  1.    Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
  2.        PictureBox1.Image = Image.FromFile(".\Art\rojo1.png")
  3.        frmMinecraft.Show()
  4.    End Sub
  5.  
  6.    ' Esto lo eliminas,
  7.    ' Y el timer del Designer lo eliminas si solo le das este uso.
  8.    '
  9.    'Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  10.    'frmMinecraft.Show()
  11.    'Me.Hide()
  12.    ' End Sub

Código
  1.    Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click
  2.        frmMain.Show()
  3.        Me.Dispose()
  4.    End Sub

PD: Si ese mismo problema estuviese en un form secundario, al liberarlo con un .Dispose se arreglaría, sigue usando .Dispose como te dije (y solo en forms secundarios) para evitar futuros problemas, eso no lo cambies.

PD2: Lo que no tenias nombrado eran los subs (algunos), tienes razón, no lo miré bien xD.

Saludos!


Título: Re: Problema al mostrar el Form Parent
Publicado por: z3nth10n en 31 Mayo 2013, 17:46 pm
Ehm  a ver ese Timer lo tengo para que se vea una imagen con relieve invertido...

Entonces ya se como solucionarlo  ;)
Graciassss... :D



En el Form secundario en el Load pongo:

Código
  1. frmMain.Timer1.Stop()

Y ya está...
PD: No tengo mucha lógica... xD (Soy novato, esos despistes luego no se me escaparán)

:)


Título: Re: Problema al mostrar el Form Parent
Publicado por: Eleкtro en 31 Mayo 2013, 17:50 pm
Ehm  a ver ese Timer lo tengo para que se vea una imagen con relieive invertido...

Si hombre, si encima voy a quedar mal no? xD

Código
  1.    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  2.        frmMinecraft.Show()
  3.        Me.Hide()
  4.    End Sub

De imágenes nada, el código no miente, eso es lo que hace el único Timer de tu proyecto.

Saludos!


Título: Re: Problema al mostrar el Form Parent
Publicado por: z3nth10n en 31 Mayo 2013, 17:51 pm
Pues si no te has fijado arriba hay esto:

Código
  1.    Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
  2.        PictureBox1.Image = Image.FromFile(".\Art\mineb2.png")
  3.        Timer1.Start()
  4.    End Sub

PD: Este código está actualizado...

xDXDXD

Ciegos everywhere... xD

Entonces el tema del Skype que?
Hablame por MP...  ;)


Título: Re: Problema al mostrar el Form Parent
Publicado por: Eleкtro en 31 Mayo 2013, 17:55 pm
Pues si no te has fijado arriba hay esto:

Me he fijado perféctamente, no entiendes lo que estás haciendo.

¿Me puedes explicar que es lo que crees que consigues en ese último código que acabas de mostrar? (te lo pregunto por ayudar)

Te lo vuelvo a decir macho, esto es lo que hace tu Timer:

Código
  1.  Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  2.       frmMinecraft.Show()
  3.       Me.Hide()
  4.   End Sub

El Timer hace lo que asocias al evento Tick, absolútamente NADA más.

"timer1.start" eso sólamente inicia el timer, que lo pongas debajo de una línea que mustra una imágen eso no significa que el timer vaya a mostrar la imagen.

Repásate las cosas un poco '¬¬

Saludos!


Título: Re: Problema al mostrar el Form Parent
Publicado por: z3nth10n en 31 Mayo 2013, 17:58 pm
Bueno da igual, con que funcione yo soy feliz xD

PD: A lo mejor dentro de unos años volveré a ver mis topics (cuando sepa algo más de VB.NET) y diré pues vaya gilipollez hice aquellos días Elektro llevaba razón...
Pero en fin... déjame con mi realidad... ;)




EDITO:
Ya se que la imagen no la muestra el Timer, lo que quiero hacer es que se vea... Porque si la muestro sin ponerle un retraso de 50ms mínimo no se ve nada así que...  :silbar:

(Esos años han pasado en Timelapse XDDDD)


Título: Re: Problema al mostrar el Form Parent
Publicado por: Eleкtro en 31 Mayo 2013, 18:03 pm
PD: A lo mejor dentro de unos años volveré a ver mis topics (cuando sepa algo más de VB.NET) y diré pues vaya gilipollez hice aquellos días Elektro llevaba razón...
Pero en fin... déjame con mi realidad... ;)

¡¿Será posible?!

Lo más increible es que aún sigas poniéndolo en duda y creas que llevas razón.

vale, yo lo dejo, me rindo ya, llevas razón y ese timer muestra una imágen xD, ahoraaa... en el futuro no nos vengas con problemas de que un Timer no te muestra cierta imágen, porque verás...!! xD   es broma, más o menos, me rio por no llorar. incrédulos...

un saludo, ya no hago más spam.





Título: Re: Problema al mostrar el Form Parent
Publicado por: z3nth10n en 31 Mayo 2013, 18:06 pm
Lee mi ultimo EDIT, a lo mejor estabas posteando y no te has dado cuenta te lo cito:

EDITO:
Ya se que la imagen no la muestra el Timer, lo que quiero hacer es que se vea... Porque si la muestro sin ponerle un retraso de 50ms mínimo no se ve nada así que...  :silbar:

(Esos años han pasado en Timelapse XDDDD)

PD: Básicamente no se muestra porque no le da tiempo suficiente...


Título: Re: Problema al mostrar el Form Parent
Publicado por: Eleкtro en 31 Mayo 2013, 18:07 pm
Ya se que la imagen no la muestra el Timer, lo que quiero hacer es que se vea... Porque si la muestro sin ponerle un retraso de 50ms mínimo no se ve nada así que...  :silbar:

No, primero dices que el timer muestra una imágen (no me jodas, eso lo has dicho, no estoy loco), luego dices que sabes que el Timer no muestra la imágen pero que lo que quieres hacer es que el Timer muestre la imágen?, me parece un poco lío.

¿Que quieres hacer y cual es el problema?, tengo el form aquí, aprovecha siendo claro.


Título: Re: Problema al mostrar el Form Parent
Publicado por: z3nth10n en 31 Mayo 2013, 18:10 pm
Ya no hay problema... Solo estamos intentando entendernos... (Nuestro mayor problema desde que nos conocimos, yo soy un lioso y tu no te enteras ni pa tiros (por poner alguna expresion))  ;-) ;-) ;-)

A ver... Si tu muestras la imagen directamente sin ningún tipo de Timer o algo que lo retrase no le da tiempo a mostrarse la segunda imagen... En cambio si le das retraso pues si se muestra...

PD: Puede que me haya expresado mal y a lo mejor te has confundido...
O eso o estoy loco XD


Título: Re: Problema al mostrar el Form Parent
Publicado por: Eleкtro en 31 Mayo 2013, 18:15 pm
A veces si tengo complicaciones para entenderte a tí, pero no me extraña!

A ver si ahora lo he captado:

Ese "timer1.start" lo tienes SÓLAMENTE PARA INTENTAR RETRASAR la ejecución de la instrucción de arriba (picturebox1.image = blablabla),
es decir que con ese timer no quieres hacer nada, solo quieres que exista para poder escribir "timer1.start" para hacer una especie de "sleep"?

Eso es más increible que lo de no entendernos,
usa Thread.sleep.

Saludos!


Título: Re: Problema al mostrar el Form Parent
Publicado por: z3nth10n en 31 Mayo 2013, 18:18 pm
A ver si yo te he entendido...

Con

Ese "timer1.start" lo tienes SÓLAMENTE PARA INTENTAR RETRASAR la ejecución de la instrucción de arriba (picturebox1.image = blablabla),

No la intento retrasar, lo que intento es retrasar la apertura del Form2 para que se vea la imagen 2 del cuadro. XD

PD: Ya?


Título: Re: Problema al mostrar el Form Parent
Publicado por: Eleкtro en 31 Mayo 2013, 18:22 pm
No la intento retrasar, lo que intento es retrasar la apertura del Form2 para que se vea la imagen 2 del cuadro. XD

Ahora si, primero lo que decías que querías retrasar era una imágen y ahora es el form xD, eso sí, no estaba loco yo, ya está aclarado.

salu2!


Título: Re: Problema al mostrar el Form Parent
Publicado por: z3nth10n en 1 Junio 2013, 12:20 pm
He probado el Thread.Sleep... Pero tengo un problem

Código
  1.    Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
  2.        Thread.Sleep(0)
  3.        PictureBox1.Image = Image.FromFile(".\Art\mineb2.png")
  4.        Thread.Sleep(100)
  5.        frmMinecraft.Show()
  6.        Me.Hide()
  7.    End Sub

Cuando pulso sobre el PictureBox, la imagen no cambia hasta los 100 ms... He probado poniendo un 0 ms antes, pero no va. ;(