Custom Controls in Visual Basic .NET per Compact Framework

Posted venerdì 10 settembre 2004 19.31 by fabio

Strano (ma vero), non è possibile realizzare controlli personalizzati (Custom Controls) per Compact Framework in Visual Basic .NET che siano utilizzabili a design-time. Il problema è dovuto al fatto che il compilatore vbc.exe segnala come errore la presenza di classi con lo stesso nome e stesso namespace ma presenti in assembly diversi entrambi referenziati nel progetto CF.

Se voglio, ad esempio, estendere le funzionalità della classe TextBox contenuta in System.Windows.Forms, in un progetto Windows o Web è sufficiente ereditare la classe stessa e modificarne il comportamento, per poterla poi utilizzare come un semplice controllo in design-time. Per le applicazioni mobile è necessario, invece, referenziare non solo i normali assembly di tipo "desktop", ma anche gli assembly di tipo "designer" del .NET Compact Framework (si trovano in "CompactFrameworkSDK\\Windows CE\Designer"), facendo anche attenzione all'ordine con cui vengono inseriti: prima i "designer assembly" del CF, poi i "desktop assembly".

Il problema è generato, però, quando vengono referenziati gli assembly System.Windows.Forms.dll e System.CF.Windows.Forms.dll. Entrambi, infatti, condividono lo stesso namespace (System.Windows.Forms) e le classi con gli stessi nomi (TextBox, ecc...). Questo genera una warning nel compilatore C# (che può essere rimossa utilizzando il parametro /nowarn:1595 del compilatore), ma un errore nel compilatore VB.NET, impedendo la generazione dell'assembly.

Speriamo che questo "inconveniente" sarà risolto con la versione 2.0 ...

 

P.S.: un ringraziamento particolare ad Alessandro per la segnalazione

Comments

No Comments