Con risposta form nascosta dietro altre form

  • lunedì 7 maggio 2012 15:56
     
     

    c'e' un modo per conoscere se una form e' nascosta dietro altre form e' quindi invisibile all'utente? in questo caso la proprieta' Visible e' sempre true. E' per l'applicazione?

    grazie

Tutte le risposte

  • lunedì 7 maggio 2012 16:02
    Postatore
     
     
    c'e' un modo per conoscere se una form e' nascosta dietro altre form e' quindi invisibile all'utente?

    Quindi stai parlando di un'applicazione che apre più finestre non modali contemporaneamente, giusto?

    In questo caso, puoi utilizzare le proprietà Size e Location della form per controllare se una è dietro un'altra.

    E' per l'applicazione?

    Questa domanda non l'ho capita. Puoi spiegare meglio questo punto?


    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva

  • lunedì 7 maggio 2012 22:41
     
     
    si esatto piu finestre modali, allora controllero+ le varie posizioni di quelle visibili, per l+applicazione intendevo dire sapere se l+applicazione é visibile all+utente oppure e anche in quessto caso dietro un+altra applicazione, in sostanza poiche´devo mostrare all+utente delle informazioni in una form vorrei essere sicuro che l+utente possa vederle altrimenti potrei visualizzarli nella form senza che siano mostrate perche+ la form e+ nascosta dietro altre form oppure perche+ l+applicazione e+ dietro altre applicazioni
  • lunedì 7 maggio 2012 22:54
    Postatore
     
     
    in sostanza poiche´devo mostrare all+utente delle informazioni in una form vorrei essere sicuro che l+utente possa vederle altrimenti potrei visualizzarli nella form senza che siano mostrate perche+ la form e+ nascosta dietro altre form oppure perche+ l+applicazione e+ dietro altre applicazioni

    Ti basta richiamare il metodo Activate sull'oggetto Form perché esso venga mostrato davanti a tutte le altre finestre aperte sul desktop: http://msdn.microsoft.com/it-it/library/system.windows.forms.form.activate.aspx.

    Ma considera anche questa alternativa. Se il tuo obiettivo è mostrare informazioni all'utente, al verificarsi di determinate condizioni, potresti inserire un'icona nella system tray (a fianco dell'orologio, per intenderci), con il classico fumetto. Così facendo, ad esempio, l'utente potrà fare clic su di esso per aprire l'applicazione.

    Questo sistema di notifica è sicuramente meno invasivo rispetto a far apparire all'improvviso una finestra sullo schermo, mentre magari l'utente sta eseguendo altre operazioni.


    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva

  • martedì 8 maggio 2012 13:03
     
     
    si in effetti e' proprio questa la mia esigenza, pero' in particolare a me interessa sapere se l'utente ha possibilita' di vedere la form, in questo caso visualizza nella form, altrimenti visualizzo la notifica
  • martedì 8 maggio 2012 13:27
    Postatore
     
     Con risposta

    Per sapere se la tua finestra è in primo piano, devi ricorrere alle funzioni dell'API di Windows. In particolare, devi usare GetForegroundWindow, che restituisce l'handle della finestra correntemente attiva: se è uguale all'handle della finestra della tua applicazione, vuol dire che essa è, appunto, in primo piano: http://www.pinvoke.net/default.aspx/user32.getforegroundwindow.

    L'handle della tua finestra lo recuperi leggenda la proprietà Handle del form.


    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva

  • sabato 26 maggio 2012 18:51
    Postatore
     
     

    Ciao!

    I suggerimenti che ti ho dato ti sono stati utili? Sei riuscito a risolvere il problema?


    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva