Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/12/2011, 21:10
Avatar de catanzaro99
catanzaro99
 
Fecha de Ingreso: diciembre-2011
Ubicación: Moreno Buenos Aires
Mensajes: 21
Antigüedad: 13 años
Puntos: 2
rutina para el cierre del programa

Hola estimados amigos

Soy nuevo en esto de programar (aunque soy un vejete en edad 52 jovenes años)
aunque he hecho mis pinitos en el viejo y querido Basic y Qbasic (cuantos recuerdos)
Ahora que estoy jubilado (a la fuerza) se me dió por aprender (autodidacticamente hablando) Visual Basic.
Cuento con el VB 2008 (Gracias a Jhony) y estoy programando (y practicando) para hacer un programa de Administración Escolar.
El tema que no puedo resolver (aunque no es muy importante) es el de poner un aviso que alerte a los usuarios cuando intentan cerrar el programa mediante un MessageBoxButtons.YesNo
la duda es que scree una pequeña rutina:

Código vb:
Ver original
  1. Dim Caption As String = " ATENCIÓN!!!  "
  2.         Dim Message As String = "Está a punto de cerrar el programa. ¿Seguro que quiere salir?  "
  3.         Dim Buttons As Integer = MessageBoxButtons.YesNo
  4.         Dim Result As DialogResult
  5.  
  6.         'Exhibe un Mensaje con ícono de ? Con dos botones SI/NO con seleccion default en No.
  7.  
  8.         Result = MessageBox.Show(Me, Message, Caption, MessageBoxButtons.YesNo, _
  9.             MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, MessageBoxOptions.RightAlign)
  10.  
  11.  
  12.         ' Obtiene el resultado de la pantalla de mensaje.
  13.  
  14.         If Result = System.Windows.Forms.DialogResult.Yes Then
  15.             ' Cierra el formulario principal.
  16.            Application.Exit()
  17.             Me.Close() 'Tambien se puede utilizar esta sentencia  
  18.         '                  Que cierra el formulario actual si actual es el formulario principal
  19.         End If

Si bien la rutina funciona a la perfección, tengo dos pequeños problemas que no logro resolver
1) Si coloco la rutina dos veces (en el evento Form1_FormClosing y en un boton salir evento Button1_Click) el evento se repite dos veces (y hasta tres si utilizo Me.Close() para cerrar el form.)
2) Me gustaria crear un solo evento que se pueda llamar desde todos los forms, supongo que mediante una clase, pero no se como hacerlo, si me pueden orientar quedaría eternamente agradecido (ojo que no quiero me hagan todo el código, si me guían como hacerlo es suficiente, pero recuerden que mis neuronas estan oxidadas...)

aquí dejo todo el código de un form para que lo analicen y me digan que es lo que estoy haciendo mal:

Código vb:
Ver original
  1. Public Class Form1
  2.  
  3.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  4.         'LoginForm1.Show()
  5.        Dim Caption As String = " ATENCIÓN!!!  "
  6.         Dim Message As String = "Esta a punto de cerrar el programa. ¿Seguro que quiere salir?  "
  7.         Dim Buttons As Integer = MessageBoxButtons.YesNo
  8.         Dim Result As DialogResult
  9.  
  10.         'Exhibe un Mensaje con ícono de ? Con dos botones SI/NO con seleccion default en No.
  11.  
  12.         Result = MessageBox.Show(Me, Message, Caption, MessageBoxButtons.YesNo, _
  13.             MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, MessageBoxOptions.RightAlign)
  14.  
  15.  
  16.         ' Obtiene el resultado de la pantalla de mensaje.
  17.  
  18.         If Result = System.Windows.Forms.DialogResult.Yes Then
  19.             ' Cierra el formulario principal.
  20.            Application.Exit()
  21.             'Me.Close() 'Tambien se puede utilizar esta sentencia que cierra el formulario actual
  22.            '           si actual es el formulario principal
  23.        End If
  24.  
  25.     End Sub
  26.  
  27.        Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
  28.  
  29.         Dim Caption As String = " ATENCIÓN!!!  "
  30.         Dim Message As String = "Esta a punto de cerrar el programa. ¿Seguro que quiere salir?  "
  31.         Dim Buttons As Integer = MessageBoxButtons.YesNo
  32.         Dim Result As DialogResult
  33.  
  34.         'Exhibe un Mensaje con ícono de ? Con dos botones SI/NO con seleccion default en No.
  35.  
  36.         Result = MessageBox.Show(Me, Message, Caption, MessageBoxButtons.YesNo, _
  37.             MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, MessageBoxOptions.RightAlign)
  38.  
  39.  
  40.         ' Obtiene el resultado de la pantalla de mensaje.
  41.  
  42.         If Result = System.Windows.Forms.DialogResult.Yes Then
  43.             ' Cierra el formulario principal.
  44.            Application.Exit()
  45.             'Me.Close() 'Tambien se puede utilizar esta sentencia que cierra el formulario actual
  46.            '           si actual es el formulario principal
  47.        End If
  48.  
  49.     End Sub
  50. End Class

Gracias...