2010-03-29 10 views
6

Mi piacerebbe implementare una funzione nella mia applicazione in cui mostrare una finestra di dialogo per l'utente e il modulo principale (similar to how jQuery looks). La mia unica idea è di prendere uno screenshot del modulo, posizionarlo come sfondo di un pannello (con opacità a mio piacimento), quindi spingere il pannello su tutto il modulo. Devo credere che ci sia un modo migliore per farlo, qualche suggerimento?Qual è il modo migliore per "attenuare" lo sfondo di winform durante la visualizzazione di una finestra di dialogo?

risposta

11

La proprietà Opacità è ciò di cui hai bisogno per "attenuare" un modulo. Dovrai creare una sovrapposizione, il mio codice in this thread mostra come farlo.

Fare attenzione a non sembrare che il programma visualizzi un prompt UAC. Sebbene forse appropriato nei browser, l'utente non avrà mai problemi nel riconoscere che una finestra sovrapposta a una finestra di dialogo è disabilitata. I controlli si dipingono in modo diverso per renderlo chiaro.

+1

+1: Questo è un approccio più facile che la mia, in quanto non richiede controlli sottoclasse. –

+3

Soluzione molto bella. Anche se, devo dire "l'utente non avrà mai problemi a riconoscere che una finestra sovrapposta a una finestra di dialogo è disabilitata" potrebbe dare troppo credito ad alcuni utenti. ;) – stout

+0

Ottima soluzione. Ma su un lato negativo, poiché una forma aggiuntiva è sovrapposta al modulo esistente, l'elemento attivo può essere sia sul modulo overlay che sul modulo padre. Questo non è l'ideale Voglio dire, non sembra che si sia formato un overlay sul modulo esistente, ma due forme sono aperte. Può esserci qualche logica per renderlo ideale? – nawfal

2

Perché non basta impostare l'opacità a qualcosa come il 50% della finestra genitore prima di avviare la finestra di dialogo modale e quindi tornare al 100% quando la finestra di dialogo modale viene chiusa? Questo non è esattamente quello che stai chiedendo serve la stessa funzione per l'utente finale.

Se vuoi fare qualcosa come il tuo esempio di JQuery, dovresti davvero fare lo screen cap/augment/set come idea di sfondo che hai descritto.

0

So che questo è un thread vecchio, ma se sei ancora interessato puoi dare un'occhiata a questo progetto.

Download Project

Problemi correlati