Lascia che ti dia lo sfondo.Forza per chiudere MessageBox a livello di programmazione
Abbiamo un'applicazione (di medie dimensioni) che utilizza MessageBox.Show (....) in vari punti (in centinaia).
Queste finestre di messaggio fanno parte di worklfow e vengono utilizzate per informare, avvertire o prendere input da un utente. L'applicazione dovrebbe disconnettersi automaticamente dopo un determinato periodo di tempo se non ci sono attività. Abbiamo il requisito che durante la disconnessione dell'applicazione, solo per pulire i dati della sessione, per cancellare le viste e nascondersi in modo che al prossimo avvio, non dovrà eseguire il processo di avvio che è costoso in termini di tempo.
Tutto funziona correttamente ma in uno scenario in cui è presente una finestra di messaggio sullo schermo e l'utente ha lasciato la macchina senza rispondere alla finestra di messaggio e quindi a causa di nessuna attività per disconnettere l'applicazione. Il problema è che la casella Messaggio non scomparirà.
Come posso chiudere la finestra di messaggio aperta, se presente, mentre nasconde l'applicazione?
Grazie.
Forse inviare tasto Invio o ESC? :) – Reniuz
Ho pensato che 'MessageBox.Show (...)' è modale, quindi come può il programma inviare una chiave? Stai usando discussioni/attività? – Fischermaen
Grazie per le risposte. Giusto per chiarire usando la casella msg personalizzata non è un'opzione in quanto la rilavorazione è abbastanza grande. Anche l'invio del tasto ESC non è corretto perché solo l'applicazione attiva riceverà il comando. Sto usando l'approccio di FIndWindow dove sto ricevendo Msgbox handle passando id e msg caption. Dopo aver ottenuto il gestore, sto chiudendo utilizzando la seguente API win32, ad es. SendMessage (nuovo HandleRef (null, msgbxcHandler), WM_CLOSE, IntPtr.Zero, IntPtr.Zero); SendMessage (nuovo HandleRef (null, msgbxcHandler), WM_NCDESTROY, IntPtr.Zero, IntPtr.Zero); Finora funziona bene. – NYK