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
Tempo attesa visualizzazione combobox
giovedì 08 novembre 2012 - 10.46
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
C#
|
Visual Studio 2005
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
gio 8 nov 2012 - 10:46
Salve a tutti.
Ho il seguente problema:
in una form 'F2' ho una combo box a cui viene passato un datatable e associato alla proprietà DataSource. La combo poi visualizza i record valorizzando anche DisplayMember e ValueMember. Questa tabella ha numerosi record.
Dalla form principale sulla pressione di un bottone istanzio la F2, passo la tabella alla combo e apro la F2 in showdialog. Questo (showdialog) inpiega un tempo T alquanto lungo prima di visualizzare la form.
Per cercare risparmiare tempo, visto che più volte l'utente preme il bottone, ho stutturato la cosa in questo modo:
1 - dichiaro la F2 a livello globale nella form e la inizializzo con valore Null.
2 - alla pressione del bottone controllo se la variabile di F2 è nulla. Solo se è nulla, la inizializzo con una istanza di F2 e gli passo la tabella alla combo, altrimenti apro la F2 in showDialog. In uscita dallo ShowDialog imposto la F2 con Visible = false (non distruggo l'oggetto)
Nonstante questo ho potuto notare che il tempo viene perso quando si fa lo ShowDialog e non quando si passa la tabella alla form. In qualche modo ad ogni showDialog è come se la combo "ridisegnasse" tutti i rows al suo interno. Visto che dal punto di vista dei dati i valori nella combo sono sempre gli stessi ad ogni apertura della F2, è possibile "evitare" in qualche modo il ridisegno automatico delle righe in modo da velocizzare il tutto in fase di ShowDialog?
Grazie
Cristian Barca
ridaria
Profilo
| Expert
905
messaggi | Data Invio:
gio 8 nov 2012 - 10:57
>Ho il seguente problema:
>
>in una form 'F2' ho una combo box a cui viene passato un datatable
>e associato alla proprietà DataSource. La combo poi visualizza
>i record valorizzando anche DisplayMember e ValueMember. Questa
>tabella ha numerosi record.
>
>Dalla form principale sulla pressione di un bottone istanzio
>la F2, passo la tabella alla combo e apro la F2 in showdialog.
>Questo (showdialog) inpiega un tempo T alquanto lungo prima di
>visualizzare la form.
>Per cercare risparmiare tempo, visto che più volte l'utente preme
>il bottone, ho stutturato la cosa in questo modo:
>
>1 - dichiaro la F2 a livello globale nella form e la inizializzo
>con valore Null.
>
>2 - alla pressione del bottone controllo se la variabile di F2
>è nulla. Solo se è nulla, la inizializzo con una istanza di F2
>e gli passo la tabella alla combo, altrimenti apro la F2 in showDialog.
>In uscita dallo ShowDialog imposto la F2 con Visible = false
>(non distruggo l'oggetto)
>
>Nonstante questo ho potuto notare che il tempo viene perso quando
>si fa lo ShowDialog e non quando si passa la tabella alla form.
>In qualche modo ad ogni showDialog è come se la combo "ridisegnasse"
>tutti i rows al suo interno. Visto che dal punto di vista dei
>dati i valori nella combo sono sempre gli stessi ad ogni apertura
>della F2, è possibile "evitare" in qualche modo il ridisegno
>automatico delle righe in modo da velocizzare il tutto in fase
>di ShowDialog?
......
credo che tu possa semplicemente: all'evento load della F2, verificare
se combo.Items.Count <= 0 then
carica comboBox con datatable ecc....
fine se
se la combo è piena non la carichi altrimenti lui la carica sempre
Io spesso ho usato questa tecnica
CIAO
fammi sapere
PS MA SEI DI BENEVENTO??????
Riccardo D'Aria
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
gio 8 nov 2012 - 11:02
ciao.
Già provato questa soluzione ma è sempre la stessa cosa.
In pratica quando la form che contiene la combo deve essere visualizzata, l'oggetto combo in automatico ridisegna ogni riga al suo interno indipendentemente se gli hai "rivalorizzato" il datasource oppure no.
Cristian Barca
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
gio 8 nov 2012 - 11:04
ho visto ora la parte finale del tuo msg.
Si sono di BN.
Cristian Barca
ridaria
Profilo
| Expert
905
messaggi | Data Invio:
gio 8 nov 2012 - 11:11
non fargli allora lo showDialog!
dagli una sorta di visible true se se lo fa fare.
Oppure un'altra soluzione potrebbe essere:
Metti i controlli della F2 in un panel che rendi visible true o false a seconda dei casi.
Ciò è fattibile se la f2 viene aperta da una sola Form ex F1
Il panel a questo punto è un controllo di F1 la combo viene caricata una sola volta, e ad ogni apertura del panel il sistema non ridisegna la combo perchè lei è sempre stata lì. :-)
Simuli la form con un panel!
Io uso spesso questa tecnica, se una maschera viene aperta da una sola form la creo con un panel.
Fammi sapere
ps sei su FB?
Riccardo D'Aria
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
gio 8 nov 2012 - 11:31
>non fargli allora lo showDialog!
>
>dagli una sorta di visible true se se lo fa fare.
Si avevo pensato a questa soluzione ma data la complessità della form chiamante (F1) mi comporta un casino di controlli e enabled da dover gestire. Utilizzavo lo showDialog perchè l'utene alla pressione del bottone deve scegliere dei dati (dalla combo) e poi impostarne altri. Al termine se conferma questi vengono processati dalla F1. Con lo ShowDialog stavo tranquillo che nel frattempo la F2 è aperta l'utente non può fare niente nella F1.
>Oppure un'altra soluzione potrebbe essere:
>
>Metti i controlli della F2 in un panel che rendi visible true
>o false a seconda dei casi.
>
>
>Ciò è fattibile se la f2 viene aperta da una sola Form ex F1
>Il panel a questo punto è un controllo di F1 la combo viene caricata
>una sola volta, e ad ogni apertura del panel il sistema non ridisegna
>la combo perchè lei è sempre stata lì. :-)
>
>Simuli la form con un panel!
>
>Io uso spesso questa tecnica, se una maschera viene aperta da
>una sola form la creo con un panel.
>
>Fammi sapere
>
>ps sei su FB?
yes.
>
>
>
>
>
>Riccardo D'Aria
Cristian Barca
ridaria
Profilo
| Expert
905
messaggi | Data Invio:
gio 8 nov 2012 - 11:45
se metti tutti i controlli della f1 in ungroupBox dovrai solo fare l'enabled della group box alla visualizzazione del panel F2.
Oppure un loop for each ctl in form tipo questo con i dovuti accorgimenti e disabiliti ed abiliti in un botto
For Each ctl As Control In me.Controls
If TypeOf ctl Is RadioButton Then
Dim rb As RadioButton = ctl
If rb.Checked = True Then
listinoPrecSelezionato = rb.Tag.ToString
Exit For
End If
End If
Next
ok
ciao
ti ho chiesto l'amicizia su fb.
mi farebbe piacere, visto che di programmatori a BN ne conosco quasi ZERo :-)
Riccardo D'Aria
AntCiar
Profilo
| Expert
936
messaggi | Data Invio:
gio 8 nov 2012 - 11:58
>se metti tutti i controlli della f1 in ungroupBox dovrai solo
>fare l'enabled della group box alla visualizzazione del panel
>F2.
>
>Oppure un loop for each ctl in form tipo questo con i dovuti
>accorgimenti e disabiliti ed abiliti in un botto
>
> For Each ctl As Control In me.Controls
> If TypeOf ctl Is RadioButton Then
> Dim rb As RadioButton = ctl
>
> If rb.Checked = True Then
> listinoPrecSelezionato = rb.Tag.ToString
> Exit For
> End If
> End If
>
> Next
>
>ok
Vedo un po come fare.
per ora non accetto ancora la risposta così attendo se qualcuno ha già avuto il problema e lo ha risolto in altro modo.
>ciao
>ti ho chiesto l'amicizia su fb.
>
>mi farebbe piacere, visto che di programmatori a BN ne conosco
>quasi ZERo :-)
OK. Non appena riusciro ad aprire facebook (di solito mi capita di poterlo fare 1 volta ogni 2 settimane circa) ti accetto l'amicizia
>
>
>Riccardo D'Aria
Cristian Barca
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 !