[vb.net] capire quando una form ha il focus

lunedì 04 dicembre 2006 - 08.05

escaflowne Profilo | Junior Member

Ciao a tutti,
ho una form che chiama con showDialog() un'altra (modale quindi).
Vorrei eseguire delle azioni sulla form padre al momento in cui quella modale viene chiusa.
Ho progato con gotFocus(), activate() ecc. ma non riesco a fargli sentire che la finestra modale è stata chiusa e che è di nuovo lei la finestra attiva.
Come posso fare?
Grazie

aggiungo che sviluppo in Visual Studio 2005

ysdemarc Profilo | Expert

Strano che activeted non ti catturi lìevento...
Se non ne esci puoi comunque chiamare qualche routine che faccia i lavori di cui hai bisogno subito dopo lo ShowDialog visto che fin quando non viene chiuso il form modale l'esecuzione si ferma a questa riga.

ciao
Vincenzo
Programmatore sbilenco

escaflowne Profilo | Junior Member

ti ringrazio per il suggerimento.
Strano vero? Anche io ero andato convinto con l'activated() o, a limite, con il gotFocus.
A questo punto (oltre a fare come dici tu), provo a fare un progettino che mi indichi tutti gli stadi di una form, dalla sua creazione alla chiamata di una modale al ritorno. Vediamo cosa viene attivato

sanbiz Profilo | Senior Member


Perchè non provi a fare una cosa come questa:

'Istanzi la tua form modale
dim myFrm as new miaFormModale

'Aggiungo l'Handler di chiusra
AddHandler myFrm.Disposed, AddressOf calleedForm_Disposed

'Chiami la tua form
myFrm.showdialog()


Private Sub calleedForm_Disposed(ByVal sender As Object, ByVal e As System.EventArgs)
'Qui ci metti il codice che vuoi gestire all'uscia della form modale
End Sub

--
Sandro Bizioli
http://blogs.dotnethell.it/sandro/

escaflowne Profilo | Junior Member

Ottimo suggerimento (come sempre :P)
ci provo e vediamo come si comporta.
Grazie

escaflowne Profilo | Junior Member

come previsto funziona egregiamente, un dubbio però:
quando chiudo una form (sia con la "x" che con me.close()), non viene effettuato anche il dispose?
Dalle prove sembrerebbe di no (poco male, lo faccio a mano ma pensavo lo facesse automaticamente)

grazie ancora
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5