Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Localizzazione di controlli: perdo lo sfondo
mercoledì 12 novembre 2008 - 15.30
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
stefanognss
Profilo
| Newbie
4
messaggi | Data Invio:
mer 12 nov 2008 - 15:30
utilizzo VS2008 v 9.0.30729.1 SP inglese. Ho creato un controllo base con un'immagine di sfondo. Creo un controllo derivato, lo apro nel designer, e lo localizzo in una prima lingua; nel momento in cui ripristino la lingua di default (o cambio la lingua) perdo l'immagine di sfondo. Se controllo il codice nel designer del controllo derivato vedo cha ha aggiunto il codice this.BackgroundImage = null; questo codice viene aggiunto quando cambio la lingua del controllo o ripristino quella di default. La stessa cosa succede in C# e VB, sia che il controllo base sia localizzato a sua volta sia che non lo sia, sia che l'immagine di sfondo del controllo base sia caricata dalle risorse del progetto che da quelle locali del controllo. Penso sia un problema del designer di VS: qualcuno ha qualche informazioni a riguardo ?
grazie a tutti.
llamanna
Profilo
| Junior Member
70
messaggi | Data Invio:
mer 12 nov 2008 - 16:27
Uso la stessa versione di visual studio ed eseguendo le tue stesse azioni ottengo lo stesso risultato. Perchè non assegni l'immagine di sfondo allo user control base nel costruttore dopo il metodo Initialize, o nell'evento load?
Laura.
http://lauralamanna.blogspot.com/
stefanognss
Profilo
| Newbie
4
messaggi | Data Invio:
gio 13 nov 2008 - 09:42
In questo caso il comportamento è ancora più misterioso: inserisco il caricamento della immagine di sfondo nel costruttore del controllo base:
InitializeComponent();
this.BackgroundImage = Properties.Resources.ACBLUPRT;
Invalidate();
Creo il solito controllo derivato, lo localizzo e lo inserisco in una form. Succede che:
1-il controllo base nel designer NON mostra comunque l'immagine di sfondo
2-il controllo derivato inizialmente la mostra, ma dopo la localizzazione non la mostra più (e compare nel designer l'assegnazione a null come prima)
3-sia il controllo derivato, che il controllo base inseriti nella form mostrano correttamente l'immagine anche dopo la localizzazione della form
4-guardando il file di risorse della form sono presenti entramne le immagini dei due controlli, sia il base che il derivato. Questo signfica che l'immagine viene inserita nel file risorse della form per ogni controllo derivato presente.
Seguendo il codice succede che:
1-InitializeComponent della form
2-costruttore del controllo derivato
3- costruttore e InitializeComponent() del controllo base (che assegna l'immagine di sfondo al controllo derivato)
4 -InitializeComponent() del controllo derivato (che toglie l'immagine al controllo derivato prechè viene assegnata a null)
5-InitializeComponet() della form che contiene nel designer l'assegnazione dell'immagine di sfondo al controllo derivato recuperandola dal file risorse della form.
MI sembra un problema di VS (credo presente anche in 2005): sai dove si può segnalare?
llamanna
Profilo
| Junior Member
70
messaggi | Data Invio:
gio 13 nov 2008 - 10:01
Il problema esposto nel tuo primo post è stato già segnalato qui
http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=2471746&SiteID=1
Laura.
http://lauralamanna.blogspot.com/
stefanognss
Profilo
| Newbie
4
messaggi | Data Invio:
gio 13 nov 2008 - 10:36
Grazie laura, ho letto
Mi sono collegato a Microsoft Connect e ho segnalato lì il problema che riguarda anche i font dei controlli, cioè se nel controllo base è inserito ad esempio una label e se ne cambia il font, durante il processo di localizzazione, se si cambia il testo della label, il controllo derivato perde il font del controllo base. A mio parere la responsabilità è del designer che "vedendo" una proprietà del controllo modificata (il testo) salva sulle risorse del controllo derivato tutte le proprietà assegnandone però (incomprensibilmente) i valori di default.
La mia soluzioe è:
-per controlli ai quali la localizzazione deve cambiare il testo non rendere il controllo visibile al controllo derivato ma inserire nel controllo base delle proprietà aggiuntive (ad esempio)
/// <summary>
/// proprietà che assegna il testo del pannello
/// </summary>
[Localizable(true), Category("Custom"), Description("Top panel text"), DefaultValue("Top Text")]
public string TopText
{
get { return lTop.Text; }
set
{
lTop.Text = value;
Invalidate();
}
}
-per l'immagine di sfondo inserire l'immagine nelle risorse del progetto e caricarla nel load del controllo base (esempio)
this.BackgroundImage = Properties.Resources.ACBLUPRT;
Invalidate();
in questo modo il controllo base NON mostra lo sfondo nel designer ma i controlli derivati sì anche dopo la localizzazione
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !