Around and About .NET World

Il blog di Marco Minerva
posts - 1671, comments - 2232, trackbacks - 2135

My Links

News

Contattami su Live Messenger:


MCTS: Windows, Web, Distributed Applications & SQL Server

MCPD: Enterprise Applications

Tag Cloud

Archives

Post Categories

Links

Bug di Visual Studio?

Ho notato un comportamento strano di Visual Studio. Nei Form C#, di default i controlli hanno la proprietà Modifies impostata su Private, quindi non sono modificabili dai form ereditati. Infatti, creando un form ereditato, se si seleziona un controllo del form padre che ha modificatore Private, tutte le sue proprietà, nella relativa finestra, appaiono disabilitate. Come è lecito aspettarsi, se nel padre si modifica la proprietà Modifiers del controllo, impostandola su Protected, nel figlio diventa possibile accedere a tutte le proprietà dell'oggetto.

Proviamo però ad impostare Modifiers nel padre su Internal. Questo modificatore indica che l'oggetto è accessibile da ogni punto dell'assembly in cui è dichiarato, quindi in teoria anche dal form figlio. Ma non è così: se torniamo nel figlio, notiamo che adesso la finestra delle proprietà del controllo è disabilitata. Resta comunque possibile accedere all'oggetto da codice, quindi ad esempio modificarne le proprietà all'interno del costruttore del form.

A conferma ulteriore del problema, fate questa prova: inserite un controllo su un form e impostatene la proprietà Modifiers su Protected. Ora create un form ereditato e da quest'ultimo modificate alcune proprietà del controllo, ad esempio il testo o la dimensione. Tornate nel padre e cambiate Modifiers su Internal. Dopo la ricompilazione, noterete che l'oggetto nel form ereditato ha di nuovo l'aspetto con cui è definito nel padre. A questo punto Eseguite l'applicazione e caricate il form ereditato... Sorpresa: il controllo utilizza le proprietà che erano state impostate quando il suo modificatore era Protected.

In conclusione, il bug sembra limitato all'editor di Visual Studio.

Print | posted on Thursday, May 31, 2007 11:32 AM | Filed Under [ C# ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET