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.
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)
Cita de: Seazoux 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.
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.
No me va...
Ninguna de las dos formas, y no encontré lo de VisibledChaged()
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.
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".
Form2.Show()
Form2.Dispose()
Form2.Show()
Si eso te sigue sin funcionar, chungo... habría que fijarse entonces en el form principal.
Saludos!
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...
Cita de: Seazoux en 31 Mayo 2013, 15:14 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)
Sigue pasando lo mismo... Ahora tarda unos cuantos milisegundos mas :(
pásame el source
Private Sub frmMain_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
Application.Exit()
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í:
Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
PictureBox1.Image = Image.FromFile(".\Art\rojo1.png")
Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
frmMinecraft.Show()
Me.Hide()
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.
Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
PictureBox1.Image = Image.FromFile(".\Art\rojo1.png")
frmMinecraft.Show()
End Sub
' Esto lo eliminas,
' Y el timer del Designer lo eliminas si solo le das este uso.
'
'Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'frmMinecraft.Show()
'Me.Hide()
' End Sub
Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click
frmMain.Show()
Me.Dispose()
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!
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:
frmMain.Timer1.Stop()
Y ya está...
PD: No tengo mucha lógica... xD (Soy novato, esos despistes luego no se me escaparán)
:)
Cita de: Seazoux en 31 Mayo 2013, 17:46 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
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
frmMinecraft.Show()
Me.Hide()
End Sub
De imágenes nada, el código no miente, eso es lo que hace el único Timer de tu proyecto.
Saludos!
Pues si no te has fijado arriba hay esto:
Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
PictureBox1.Image = Image.FromFile(".\Art\mineb2.png")
Timer1.Start()
End Sub
PD: Este código está actualizado...
xDXDXD
Ciegos everywhere... xD
Entonces el tema del Skype que?
Hablame por MP... ;)
Cita de: Seazoux en 31 Mayo 2013, 17:51 PMPues 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:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
frmMinecraft.Show()
Me.Hide()
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!
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)
Cita de: Seazoux en 31 Mayo 2013, 17:58 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.
Lee mi ultimo EDIT, a lo mejor estabas posteando y no te has dado cuenta te lo cito:
Cita de: Seazoux en 31 Mayo 2013, 17:58 PM
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...
Cita de: Seazoux en 31 Mayo 2013, 17:58 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.
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
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!
A ver si yo te he entendido...
Con
Cita de: EleKtro H@cker en 31 Mayo 2013, 18:15 PM
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?
Cita de: Seazoux en 31 Mayo 2013, 18:18 PMNo 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!
He probado el Thread.Sleep... Pero tengo un problem
Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
Thread.Sleep(0)
PictureBox1.Image = Image.FromFile(".\Art\mineb2.png")
Thread.Sleep(100)
frmMinecraft.Show()
Me.Hide()
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. ;(