Newsgroup: it.comp.lang.visual-basic
Titolo: fastidiosa permanenza a video delle Messagebox

Quando se ne aprono 3 o 4 di seguito ( a causa ad esempio della pressione di 
un tasto) l'ultima rimane fastidiosamente visualizzata sullo schermo,solo 
come immagine inattiva e  a volte spezzata e incompleta ,ma da fastidio.
Allego un esempio di queste MessageBox fantasma :
 
https://imageshack.com/i/jmawh3j
 
 
Dipende dalla poca memoria della scheda video del mio pc ?
 
Grazie 
 
 

"vittorio" ha scritto

Più che altro dai driver del cavolo, direi.
Prova a fare un .refresh del form, ma è una
pezza, non una soluzione.
Magari fai un test e vedi se installando un
programma di prova su un PC con una scheda
e dei driver decenti il problema si verifica
o meno.
 
*****
 
Altra possibilità è che quel controllo tipo
griglia che stai usando, e su cui si verifica
il problema, almeno in quell'immagine che hai
mandato, non sia standard... che roba è ?
 
Bye, G. 
 
 

 mandato, non sia standard... che roba è ?
 
é il DataGrid  di visual studio standard ,usato con WPF .
 
 

 
"vittorio" <a...@aworrrnder.pp> ha scritto nel messaggio
news:lgajs6$5c1$1...@speranza.aioe.org...

RISOLTO : ho messo l'istruzione
"System.Windows.Forms.Application.DoEvents();" dopo ciascuna  istruzione
MessageBox.Show(...)   nel codice .
 
 
 

 MessageBox.Show(...)   nel codice .
 
A meno che subito dopo il MessageBox non parta una procedura pesantissima che ti ammazza la CPU (e non da tempo alla finestra di fare refresh), questo non dovrebbe essere mai necessario... è più probabile sia appunto qualche pasticcio di driver video e simili; si comportava così anche su altri PC?

 MessageBox.Show(...)   nel codice .
 
<A meno che subito dopo il MessageBox non parta una procedura pesantissima 
che ti ammazza la CPU
 
infatti,iniziavano delle istruzioni 
ADO.NET
  pesantucce .....inoltre il PC 
con il problema ha un processore non esaltante.
Ma l'introduzione dell'istruzione doevents non si percepisce,nessun 
rallentamento. 
 
 

 MessageBox.Show(...)   nel codice .
 
Siccome sei in WPF sconsiglio di usare codice di Windows Forms.
Ragion per cui ti giro una bella classe che lavora con il Dispatcher
 
Imports System.Windows.Threading
 
Public Class clsDoEvents
    'Funzione che emula il DoEvents presente su Windows Forms
 
    Private Shared exitFrameCallback As New
DispatcherOperationCallback(AddressOf ExitFrame)
 
 
    Public Shared Sub DoEvents()
 
        ' Create new nested message pump.
        Dim nestedFrame As New DispatcherFrame()
 
 
        ' Dispatch a callback to the current message queue, when getting called,
        ' this callback will end the nested message loop.
        ' note that the priority of this callback should be lower than the that
of UI event messages.
 
        Dim exitOperation As DispatcherOperation =
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background,
exitFrameCallback, nestedFrame)
 
 
        ' pump the nested message loop, the nested message loop will
        ' immediately process the messages left inside the message queue.
 
        Dispatcher.PushFrame(nestedFrame)
 
 
        ' If the "exitFrame" callback doesn't get finished, Abort it.
        If exitOperation.Status <> DispatcherOperationStatus.Completed Then
 
            exitOperation.Abort()
        End If
 
    End Sub
 
 
 
    Private Shared Function ExitFrame(ByVal state As [Object]) As [Object]
 
        Dim frame As DispatcherFrame = TryCast(state, DispatcherFrame)
 
        ' Exit the nested message loop.
        frame.[Continue] = False
 
        Return Nothing
 
    End Function
End Class
 
 

 Ragion per cui ti giro una bella classe che lavora con il Dispatcher
 
grazie.
 
PS: chissŕ perchč non funziona il ridisegno di un form con i metodi 
Invalid(), InvalidLayout() etc.. dell'oggetto window.
Ho provato ad usarli anche sul controllo che veniva coperto(č un DataGrid) 
,ma senza risultato.
Questi metodi usano il dispatcher dietro le quinte,eppure non hanno 
ridisegnato l'UIelement.