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
UserControl poco performante
mercoledì 05 gennaio 2005 - 02.46
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
-gio-
Profilo
| Newbie
1
messaggi | Data Invio:
mer 5 gen 2005 - 02:46
Ciao a tutti,
ho un problema con uno UserControl di un WindowsForm, ed essendo nuovo nello sviluppo di applicazioni windows ho bisogno di una dritta su come muovermi:
lo user control è composto da 4 o 5 Controlli Form più un numero variabile (da 4 a 30) di Button e Panel. Ognuno di questi Panel è composto da un numero variabile (in media 20) di altri Panel. Quando clicco su un bottone questo questo UserControl fa un this.Controls.Clear() e li ricostruisce da capo.
A questo punto i miei problemi sono 2:
1 - ogni volta che clicco sul bottone lo UserControl va sempre più lento a ricaricarsi (dopo 5 o 6 volte è quasi fermo)
2 - se l'area occupata da questo UserControl esce dal form non vengono create le bande di scorrimento
Girando nei forum ho letto che per generare le bande di scorrimento si deve mettere la funzione che "disegna" il controllo dentro l'evento Paint (o fare l'override di esso).
Ho provato a seguire questo consiglio ma se carico anche solo 2 Panel (ognuno dei quali ne contiene circa altri 20) ricevo un errore "Error creating window handle".
Dopo qualche ricerca mi è sembrato di capire che è generato dal fatto che lo UserControl ha troppi controlli al suo interno; così, invece di utilizzare dei Panel (che avevano scopo puramente grafico) ho provato a disegnarli con linee e rettangoli con il PaintEventHandler, ma l'errore continua a comparire, anche se regge fino a 6 o 7 Panel, e le prestazioni, in termini di velocità a far comparire l'immagine, sono nettamente peggiorate...
Non sò che strada prendere, nel senso che provare a disegnare a mano la grafica senza Panel ha solo peggiorato le cose.
Esistono metodi più efficaci per ottenere il risultato che cerco?
Grazie
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
lun 10 gen 2005 - 01:39
Ciao,
sicuramente la progettazione di componenti Winforms o Webforms è molto delicata.
In particolare quella Winforms richiede più attenzione perchè spesso e volentieri ci si fa prendere la mano e si creano controlli su controlli su controlli che alla fine occupano la memoria.
Io quindi ti direi di controllare un po' quello che fa la tua applicazione. Magari usa il task manager e vedi l'occupazione del processo quando crei il tuo nuovo User Control.
Inoltre da quello che ho capito tu non hai creato un user control ma un container di altri controlli panel, ecc. Questo non è proprio uno user control. Di solito uno user control è atomico cioè una singola unit non scomponibile in più parti. Esempio un Button è un Button e basta non è scomponibile.
Facendo così come stai facendo vedi che ti ritrovi nei casini perchè escono le barre ma tu non le vuoi, hai un consumo di memoria elevatissimo, ecc.
Il container è comodo ma fa vita a sè. Non puoi trasformalo in Usercontrol.
Questo il mio pensiero.
ciao
david
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 !