VB.Net MessageBox.Show () sposta il mio modulo sul retro
-
03-07-2019 - |
Domanda
Ho un'applicazione MDI. Quando mostro una finestra di messaggio usando MessageBox.Show (), l'intera applicazione scompare dietro tutte le mie finestre aperte quando chiudo la finestra di messaggio.
Il codice non sta facendo nulla di speciale. In effetti, ecco la riga che richiama la finestra di messaggio all'interno di un modulo figlio MDI:
MessageBox.Show(String.Format("{0} saved successfully.", Me.BusinessUnitTypeName), "Save Successful", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly)
Me.BusinessUnitTypeName () è un getter di proprietà di sola lettura che restituisce una stringa, a seconda del valore di una variabile membro. Non ci sono effetti collaterali in questa proprietà.
Qualche idea?
Soluzione
Rimuovi l'ultimo parametro, MessageBoxOptions.DefaultDesktopOnly
.
Da MSDN :
DefaultDesktopOnly causerà il applicazione che ha sollevato MessageBox perdere la concentrazione. Il MessageBox che è visualizzato non utilizzerà gli stili di visualizzazione. Per ulteriori informazioni, consultare Rendering Controlla con gli stili di visualizzazione.
L'ultimo parametro consente la comunicazione di un servizio Windows in background con il desktop attivo tramite csrss.exe! Vedi i post sul blog di Bart de Smet per i dettagli.
Altri suggerimenti
Rimuovi il parametro MessageBoxOptions.DefaultDesktopOnly
e funzionerà correttamente.
DefaultDesktopOnly
specifica che " La finestra di messaggio viene visualizzata sul desktop attivo " che causa la perdita di messa a fuoco.
Queste risposte sono corrette, ma volevo aggiungere un altro punto. Mi sono imbattuto in questa domanda mentre lavoravo con il codice di qualcun altro. Una semplice finestra di messaggio faceva spostare la maggior parte della finestra in primo piano:
MessageBox.Show (" Ciao ").
Si è scoperto, prima del MessageBox c'era un comando BindingSource.Endedit. BindingSource non era ancora collegato a nessun controllo, ma ha causato la modifica della posizione z della finestra.
Includo questa nota poiché la mia ricerca mi ha portato a questa domanda e ho pensato che potesse essere utile a qualcun altro.