Chiudere il form con un click

venerdì 31 ottobre 2008 - 10.55

Teech Profilo | Expert

Ho un form modale che utilizzo per visualizzare dei dati dove ho inserito una serie di Label in modo molto semplice.
Ora vorrei che questo form si chiudesse facendoci un click sopra con il mouse. Per fare ciò ho messo scritto
Me.Close
nell'evento MouseDown del form.
Tutto bene se non che quando clicco su un'area del form dove è presente una label l'evento non si scatena... Come posso fare? Avevo letto qualcosa e riguardo (mi sembra bisognasse variare il valore di una proprietà del form) ma non trovo più il tips...

Grazie
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

freeteo Profilo | Guru

ciao,
non so a che tip ti riferisci, cmq puoi pensare di agganciarti il codice anche a tutti gli eventi click delle varie label.

Magari non uno per uno ovviamente, ma con un ciclo in modo che sia fatto una volta e in futuro se aggiungi una label venga chiamato lo stesso, con un codice tipo:
private void Form_Load(object sender, EventArgs e) { this.Click += new EventHandler(item_Click); foreach (Control item in this.Controls) item.Click += new EventHandler(item_Click); } void item_Click(object sender, EventArgs e) { this.Close(); }
questo è un codice molto "grezzo", magari vuoi fare delle distinzioni sul tipo di controllo dentro al ciclo etc...ma è per darti l'idea di come fare io, poi tu lo perfezioni se ti può andare bene come concetto...
ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

Teech Profilo | Expert

Dire che è una soluzione perfetta è riduttivo... Grazie mille!!!
P.S.: Non so perchè mi ricordavo di una proprietà del controllo "contenitore" che permetteva di intercettare gli eventi dei controlli contenuti.

--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

freeteo Profilo | Guru

>Dire che è una soluzione perfetta è riduttivo... Grazie mille!!!
grazie ma "perfetto" è una parola grossa...diciamo che solo che va bene


>P.S.: Non so perchè mi ricordavo di una proprietà del controllo
>"contenitore" che permetteva di intercettare gli eventi dei controlli
si probabilmente ti confondevi con il fatto di abilitare il "keyPreview=true" nella form, e così era possibile intercettare nell'evento "keyDown" di questa i keydown di tutti i controlli in essa contenuti.
Questo è validissimo per i tasti premuti (kwydown appunto) ma per il click del mouse che sappia io non c'è niente di analogo...
ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

Teech Profilo | Expert

Mi sa che mi confondevo con il KeyPreview... Mentre cercavo questa fatidica proprietà mi ci sono imbattuto ma vedendo che si trattava di tastiera ho pensato che non era quella...
Per il perfetto mi riferivo ai miei standard: è facile, veloce ed elegante (anzi, delegante... -ho fatto la battuta-)

Grazie ancora
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

freeteo Profilo | Guru

>Per il perfetto mi riferivo ai miei standard: è facile, veloce
>ed elegante (anzi, delegante... -ho fatto la battuta-)
ROTFL!
ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5