DotNetToscana
User Group Toscano su .NET

Impedire il flickering di un controllo o di una form

Article
Comments (0)
History (4)
100% of people found this useful

Impedire il flickering di un controllo o di una form

Autore: Marco Minerva

Quando è necessario effettuare lunghe operazioni di aggiornamento di un controllo contenuto in una Form, ad esempio una ListView oppure una TreeView, nonostante si utilizzino i metodi BeginUpdate ed EndUpdate, è possibile osservare fastidiosi effetti di flickering. Per eliminare completamente questo problema, è possibile ricorrere alla funzione dell'API di Windows LockWindowUpdate, con cui è possibile abilitare o disabilitare il disegno (e, quindi, l'aggiornamento) di una certa regione:

[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern bool LockWindowUpdate(IntPtr hWndLock);

Per impedire l'aggiornamento del controllo TreeView1, è sufficiente usare questa istruzione:

LockWindowUpdate(TreeView1.Handle);

Al termine delle operazioni, è necessario riabilitare le funzioni di disegno utilizzando il valore IntPtr.Zero:

LockWindowUpdate(IntPtr.Zero);

E' importante assicurarsi di richiamare sempre quest'ultima istruzione, altrimenti l'oggetto "bloccato" (una TreeView in questo caso) non riceverà più messaggi di aggiornamento.

Recent Comments

No comments exist yet for this page.
View More
Powered by Community Server (Commercial Edition), by Telligent Systems