Hola
Tengo esto para cerrar el programa ,pero recién me doy cuenta que algunas variables no se liberan ya que cuando lo vuelvo a ejecutar me suma los anteriores datos.cuando debería ser de cero,
que le faltaria a esto para liberar todo ?
Private Sub CerrarProgramaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CerrarProgramaToolStripMenuItem.Click
If MessageBox.Show("Esta seguro que desea Cerrar la aplicacion", "Cerrar ", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
Me.Close()
End If
Luis
Buenas
1) Muestra las declaraciones de dichas variables, y la parte del código donde accedes a esa variable esperando que sea "0".
2) ¿Ese es el único y principal Form de la aplicación?, ya que en tal caso estás terminando la aplicación correctamente.
Las variables (normales) solo existen durante la instancia del Form/Class donde se encuentren, y si ese es el Form principal entonces todo tipo de variable/objeto solo existe mientras la app esté en ejecución, es decir, si terminas la app y la vuelves a iniciar toda variable debería volver a su valor por defecto (ya sea este valor "0" o el valor que le asignaste por defecto),
de todas formas no se si ese es el Form principal o un Form secundarío ni si estás usando variables compartidas u otra cosa, así que prueba a utilizar el evento FormClosing para "resetear" las variables, aunque esto no es necesario en caso de que solo tengas un Form en tu aplicación:
Form1:
Public Class Form1
Private Sub Form1_Shown(ByVal sender As Object, ByVal e As EventArgs) _
Handles MyBase.Shown
Form2.Show()
Debug.WriteLine(String.Format("Valor de 'Var' despues de cargar el Form2: {0}", CStr(Form2.var))) ' 5
Form2.Close()
Debug.WriteLine(String.Format("Valor de 'Var' despues de cerrar el Form2 de forma normal: {0}", CStr(Form2.var))) ' 5
Form2.Close(resetVars:=True)
Debug.WriteLine(String.Format("Valor de 'Var' despues de cerrar el Form2 de forma alterna: {0}", CStr(Form2.var))) ' 1
End Sub
End Class
Form2:
Public Class Form2
' Declaro e inicializo la variable con el valor por defecto "1".
Public Shared var As Integer = 1
Private Sub Form2_Load(ByVal sender As Object, ByVal e As EventArgs) _
Handles MyBase.Load
' Cambio el valor de Var al cargar este Form.
var = 5
End Sub
Public Overloads Sub Close(ByVal resetVars As Boolean)
If resetVars Then ' reseteo la variable a su valor or defecto.
var = 1
End If
' Llamo al método close de la clase base.
MyBase.Close()
End Sub
End Class
PD: Otra cosa que puedes hacer (en caso de que sea un Form secundario) es utilizar el método Form.Dispose, con esto se liberan sus recursos.
Saludos
Bien el problema creo haberlo resuelto con :
Me.Refresh()
ya que como dice Elektro estaba cerrando bien el Form ya que es unico :)
Me.Close()
Luis