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
Dim Caption As String = " ATENCIÓN!!! " Dim Message As String = "Está a punto de cerrar el programa. ¿Seguro que quiere salir? " Dim Buttons As Integer = MessageBoxButtons.YesNo Dim Result As DialogResult 'Exhibe un Mensaje con ícono de ? Con dos botones SI/NO con seleccion default en No. Result = MessageBox.Show(Me, Message, Caption, MessageBoxButtons.YesNo, _ MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, MessageBoxOptions.RightAlign) ' Obtiene el resultado de la pantalla de mensaje. If Result = System.Windows.Forms.DialogResult.Yes Then ' Cierra el formulario principal. Application.Exit() Me.Close() 'Tambien se puede utilizar esta sentencia ' Que cierra el formulario actual si actual es el formulario principal 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
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'LoginForm1.Show() Dim Caption As String = " ATENCIÓN!!! " Dim Message As String = "Esta a punto de cerrar el programa. ¿Seguro que quiere salir? " Dim Buttons As Integer = MessageBoxButtons.YesNo Dim Result As DialogResult 'Exhibe un Mensaje con ícono de ? Con dos botones SI/NO con seleccion default en No. Result = MessageBox.Show(Me, Message, Caption, MessageBoxButtons.YesNo, _ MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, MessageBoxOptions.RightAlign) ' Obtiene el resultado de la pantalla de mensaje. If Result = System.Windows.Forms.DialogResult.Yes Then ' Cierra el formulario principal. Application.Exit() 'Me.Close() 'Tambien se puede utilizar esta sentencia que cierra el formulario actual ' si actual es el formulario principal End If End Sub Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing Dim Caption As String = " ATENCIÓN!!! " Dim Message As String = "Esta a punto de cerrar el programa. ¿Seguro que quiere salir? " Dim Buttons As Integer = MessageBoxButtons.YesNo Dim Result As DialogResult 'Exhibe un Mensaje con ícono de ? Con dos botones SI/NO con seleccion default en No. Result = MessageBox.Show(Me, Message, Caption, MessageBoxButtons.YesNo, _ MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, MessageBoxOptions.RightAlign) ' Obtiene el resultado de la pantalla de mensaje. If Result = System.Windows.Forms.DialogResult.Yes Then ' Cierra el formulario principal. Application.Exit() 'Me.Close() 'Tambien se puede utilizar esta sentencia que cierra el formulario actual ' si actual es el formulario principal End If End Sub End Class
Gracias...