2014-11-17 18 views
5

Sto lavorando sulla mia prima applicazione WinForms ... Io di solito scrivo applicazioni web ...MessageBox è modale al desktop

Una cosa di strano sta accadendo con la mia domanda di oggi. Se eseguo l'applicazione sul mio computer o il mio collega lo esegue sul suo computer, i miei MessageBox sono modali solo per la mia applicazione. Questo è il comportamento desiderato. I miei utenti dovranno essere in grado di apportare modifiche manuali in un'applicazione separata se viene visualizzata una finestra di messaggio, e facendo clic su "OK" nella finestra del messaggio, "riattiverà" la mia applicazione e consentirà loro di continuare.

Questo pomeriggio abbiamo appena installato una versione beta dell'applicazione sui computer di due utenti finali e per qualche motivo quando eseguiamo l'applicazione su uno dei loro computer le caselle di messaggio sono modali sul desktop - nessun altro può ricevere il focus fino a quando viene cliccato "OK". Questo comportamento causa un problema ENORME per la mia applicazione.

Non so cosa potrebbe essere diverso sulle macchine degli utenti per causare questo comportamento. Il mio computer - Win7 64-bit, il computer del mio collega di lavoro - Win7 a 32 bit, i computer di due utenti sono Win7 a 32 bit. Tutti hanno installato .Net Framework 4.5 o 4.5.1.

Qualche consiglio?


AGGIORNAMENTI:

2014.11.17 - frammento di codice

DialogResult result = MessageBox.Show("The Style field did not pass validation. 
         Please manually fix the data then click OK to continue.", 
         "WARNING", MessageBoxButtons.OK, 
         MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); 
+0

Hai provato la funzione 'SetForeGround' nel tuo MessageBox? 'MsgBox (" Message ", MsgBoxStyle.Exclamation + MsgBoxStyle.MsgBoxSetForeground," Title ")' – Alex

+0

@Alex cosa fa MsgBoxSetForeground? il breve piccolo blurb che ho trovato su MSDN non lo spiega abbastanza bene per me. – CDR12

+0

Si suppone di fare una sorta di "Porta in primo piano" con il tuo MessageBox. In questo modo non dovrebbe essere una modal sul desktop ma nella finestra dell'app più recente che è stata aperta. Come visualizzi la tua finestra di messaggio? Quale linea di codice fa questo? – Alex

risposta

1

Se Hans Passant aveva postato una risposta piuttosto che un commento avrei segnato la sua risposta come la risposta.

Ecco come ho risolto il problema:

DialogResult result = MessageBox.Show(t2tWindow, "The Style field did not pass 
         validation. Please manually fix the data then click OK 
         to continue.", "WARNING", MessageBoxButtons.OK, 
         MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); 

Questo codice è in una classe separata "utilità", non nella del form code-behind, così ho dovuto passare un parametro IWin32Window nel metodo in modo Potrei passarlo al metodo Show().