No, dovrai creare la tua casella di messaggio. la classe MessageBox
supporta solo un comportamento simile a .ShowDialog()
che è un'operazione modale.
È sufficiente creare un nuovo modulo che utilizzi parametri e utilizzi quelli per creare una casella di messaggio con stile a proprio piacimento.
Aggiornamento 2014-07-31
Nello spirito di mantenere la chiarezza per chiunque altro che trova questo attraverso google mi piacerebbe prendere un secondo per spiegare questo un po 'di più:
Sotto il cofano MessageBox
è una fantasia C# wrapper Windows SDK user32.dll MessageBox Function e quindi si comporta esattamente allo stesso modo (dopo la conversione .NET enumerazioni nei numeri interi che rappresentano la stessa cosa nella chiamata di sistema.
Ciò significa che quando si chiama MessageBox.Show()
la chiamata viene eseguita il marshalling all'esterno del sistema operativo e il blocco viene aperto finché non viene selezionata un'opzione o la finestra viene chiusa. Per evitare che il codice venga fermato è necessario avviare la finestra di messaggio su un thread separato, ma questo significa che qualsiasi risultato che torna dalla finestra di messaggio (Sì/No/Ok/Cancellare/Ecc ...) verrà restituito al thread separato che è stato incaricato di chiamare la finestra di messaggio.
Se si agisce sul risultato di questa finestra di messaggio avviata in questo modo, sarà necessario inviare nuovamente il risultato alla discussione dell'interfaccia utente per sicurezza thread.
In alternativa è possibile creare il proprio modulo di messaggio in WinForms/WPF e chiamarlo con il metodo .Show()
. Eventuali eventi click sui pulsanti verranno eseguiti sul thread dell'interfaccia utente e non sarà necessario inviare nuovamente le chiamate al thread dell'interfaccia utente per manipolare le cose nell'interfaccia utente.
Ok, ho capito, quindi devo solo creare il mio modulo. Molto fattibile, grazie! – sooprise
Quindi se avessi 'Messagebox.Show (MessageBoxButtons.OK) 'il programma si interromperà fino a quando un utente non fa clic sul pulsante OK? Perché voglio eseguire il mio processo di automazione e una volta completati i primi 2 processi, mettere in pausa il processo tramite Messagebox e, dopo che l'utente ha fatto clic sulla messagebox, eseguire il successivo processo di automazione. – HanH1113
@ HanH1113 Il metodo 'MessageBox.Show()' sotto le copertine funziona in modo efficace allo stesso modo di '.ShowDialog()'. È un'operazione di blocco, quindi l'esecuzione viene interrotta fino alla chiusura della finestra di dialogo. Ho aggiornato la mia risposta per essere più chiara. – Aren