Supongamos que creamos un widget de Gtk que deseamos poner en una ventana, pero que en algún evento del mismo se cierre la ventana madre.
En este caso usaremos un Event Handler para que la ventana madre se suscriba al mismo.
Para lograrlo se pueden seguir los siguientes pasos:
1.- Definimos el EventHandler en el control hijo.
public event EventHandler Closing;
2.- La clase madre debe suscribirse al mismo.
por ejemplo:
MainWindow win = new MainWindow();
win.Closing += new EventHandler(OnDeleteEvent);
pero como en nuestro caso es un widget omitiremos la parte de la creación del widget.
el código quedaría así:
this.pdfviewerwidget2.Closing += new EventHandler(OnDeleteEvent);
4.-Al cerrar el widget revisar el evento y activarlo:
private void btnClose_Clicked (object sender, EventArgs e)
{
if (Closing != null) {
Closing (this, new EventArgs ());
}
this.Destroy();
}
5.- Ahora; creamos el método que se activará al cerrar el control hijo en la clase madre:
public void OnDeleteEvent(object sender, EventArgs args)
{
this.Destroy ();
}
Y esto es todo lo necesario, ahora en cuanto cerremos en el botón hijo se active el botón Close, se activará el evento OnDeleteEvent en la clase madre.
En este caso usaremos un Event Handler para que la ventana madre se suscriba al mismo.
Para lograrlo se pueden seguir los siguientes pasos:
1.- Definimos el EventHandler en el control hijo.
public event EventHandler Closing;
2.- La clase madre debe suscribirse al mismo.
por ejemplo:
MainWindow win = new MainWindow();
win.Closing += new EventHandler(OnDeleteEvent);
pero como en nuestro caso es un widget omitiremos la parte de la creación del widget.
el código quedaría así:
this.pdfviewerwidget2.Closing += new EventHandler(OnDeleteEvent);
4.-Al cerrar el widget revisar el evento y activarlo:
private void btnClose_Clicked (object sender, EventArgs e)
{
if (Closing != null) {
Closing (this, new EventArgs ());
}
this.Destroy();
}
5.- Ahora; creamos el método que se activará al cerrar el control hijo en la clase madre:
public void OnDeleteEvent(object sender, EventArgs args)
{
this.Destroy ();
}
Y esto es todo lo necesario, ahora en cuanto cerremos en el botón hijo se active el botón Close, se activará el evento OnDeleteEvent en la clase madre.
Comentarios
Publicar un comentario