Confessions of a Dangerous Mind

Brain.FlushBuffer()
posts - 83, comments - 151, trackbacks - 325

EnableVisualStyles() e le icone dei controlli *View

Il supporto per i Temi di Windows è presente nelle applicazioni Windows Forms sin dalla versione 1.0 del Framework .net. Dalla versione 1.1, per evitare l'onere di aggiungere un file .manifest da distribuire con l'applicazione, è stato introdotto il metodo EnableVisualStyles() della classe Application. L'abilitazione dei temi, però, soffriva di un fastidioso bug, che consisteva nella "sparizione"  delle icone delle toolbar presenti nella nostra applicazione. Tale bug può essere risolto richiamando Application.DoEvents() appena dopo Application.EnableVisualStyles().

Nel Framework 2.0 il bug è stato risolto, ma ieri sera ho comunque trovato dei problemi relativi ai controlli ListView e TreeView, ovvero le icone sparivano nuovamente. Da notare che le toolbar funzionavano perfettamente visualizzando le icone. Il problema sembra infatti collegato all'uso del controllo ImageList. Se qualcuno si trovasse nella stessa situazione, consideri che il problema è scomparso  nel momento stesso in cui ho spostato la chiamata Application.EnableVisualStyles() da un metodo che avevo creato alla prima riga del metodo Main, entry point dell'applicazione:

<STAThread()>Public Shared Sub Main()
    Application.EnableVisualStyles()
    
    Application.Run(
new MainForm())
End Sub

Il problema sembra dovuto al fatto che nella mia applicazione richiamavo codice relativo alle funzionalità delle Windows Forms prima della chiamata ad EnableVisualStyles(). Quindi è fortemente consigliato, qualora vogliate realizzare un'applicazione Windows Forms che faccia uso di temi ed utilizzi un metodo Main come entry point, richiamare come prima istruzione del metodo Main la Application.EnableVisualStyles().

Print | posted on mercoledì 10 maggio 2006 12.43 | Filed Under [ Tech Tips ]

Feedback

No comments posted yet.

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 2 and 1 and type the answer here:

Powered by: