Ho un modulo a più riquadri, nel riquadro di sinistra è un albero e nel pannello di destra è un pannello. Le selezioni di alberi danno luogo a specifici UserControls caricati sul Pannello. In questo caso, poiché il modulo padre è sempre caricato, non posso collegarmi all'evento Mostrato del modulo genitore.Come chiamare un metodo in un UserControl dopo che è stato mostrato?
La maggior parte dei miei UC ha un DataGridView non associato su di essi che deve essere compilato quando viene creato l'UC. Ci possono essere 50.000 righe aggiunte in anticipo, da un database di SQL Server.
Fino ad ora ho popolato le griglie durante il costruttore UC, ma da quando abbiamo iniziato a lavorare con 50.000 righe le cose sono cambiate. Ho scoperto che il popolamento della griglia con 50.000 righe dal costruttore richiede almeno 15 minuti per una ragione pazzesca. Tuttavia, se aspetto di popolare la griglia finché non faccio clic su un pulsante o dall'evento Load, sono necessari 15 secondi. Questo è un mistero. Quindi sto cercando di spostare il caricamento della griglia altrove.
Quando provo a compilare la griglia dall'evento Load, tuttavia, ci sono incoerenze visive. Cosa succede, vedi una piccola versione del mio UC apparire, ci vogliono 15 secondi per caricare le file DGV, e POI l'UC si espande per riempire il Pannello (la proprietà UC Dock è impostata su Fill). Quindi non mi piace neanche questa opzione.
L'evento mostrato sarebbe un luogo perfetto per caricare la mia griglia, se esistesse per le UC. Qualcuno sa di un altro modo per farlo?
Una domanda migliore è il motivo per cui ci vogliono 15 minuti per caricare nel costruttore, ma 15 secondi altrove. – Justin
Probabilmente perché la sua logica di popolazione è in esecuzione in base a qualcosa che cambia molte volte durante la costruzione di un modulo, o ha il sovraccarico della cache caricando diversi DGV sul caricamento del modulo. – KeithS
Le idee sono benvenute sul perché questo sta accadendo. Preferirei rimanere con il mio precedente approccio. Il codice consiste in una chiamata al database (i dati non cambiano) e riempie un singolo DGV. C'è una differenza tra la chiamata dal costruttore e la chiamata dal pulsante: il costruttore viene chiamato da un thread di BackgroundWorker. Potrebbe essere la causa di ciò? –