Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [C#]Forzare caricamento dei controlli sulla form
Forum - C# / VB.NET - [C#]Forzare caricamento dei controlli sulla form

Avatar
XineD (Normal User)
Newbie


Messaggi: 5
Iscritto: 25/11/2014

Segnala al moderatore
Postato alle 12:23
Giovedì, 27/11/2014
Buongiorno!

Devo fare il collegamento ad un database, solo che se c'è un errore nel collegamento il programma non deve soltanto comunicare l'errore ma deve continuare a tentare la connessione al DB, per far questo ho creato un'altra form, LoadDB, e ci ho inserito una picturebox con un'immagine che indica il tentativo di connessione, poi nella classe della form LoadFile ho inserito un metodo Loading() all'interno del quale viene effettuata la connessione con un ciclo while che finchè c'è un errore continua a girare e tentare la connessione. Quindi nella form principale istanzio la form LoadDB, la visualizzo e quindi richiamo il metodo Loading(), così:
Codice sorgente - presumibilmente C# / VB.NET

  1. InitializeComponent();
  2. LoadDB DB = new LoadDB();
  3. DB.ShowDialog();
  4. DB.Loading();



Solo che la form viene creata e visualizzata ma i controlli al suo interno no... quindi mi ritrovo con una finestra windows completamente pulita... Qualcuno ha idea di come risolvere questo problema? Ho provato anche inserendo un controllo if(pBox.Visible) oppure if(pBox.Created) per verificare se i controlli sono stati creati e visualizzati nella form, e quindi eseguivo il codice del metodo DB.Loading() ma sono entrambi true anche se i controlli non si vedono.... :pat:

Grazie e buona giornata! :)

PM Quote
Avatar
GN (Member)
Guru


Messaggi: 770
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 13:34
Giovedì, 27/11/2014
Credo che il modo più opportuno (anzi l'unico, visto che un ciclo infinito sul thread dell'UI blocca la GUI stessa) sia far girare il tutto su un thread separato. Potresti usare un BackgroundWorker (http://msdn.microsoft.com/it-it/library/system.componentmo ... oppure direttamente la classe thread (http://msdn.microsoft.com/it-it/library/system.threading.t ....


PM Quote
Avatar
XineD (Normal User)
Newbie


Messaggi: 5
Iscritto: 25/11/2014

Segnala al moderatore
Postato alle 10:04
Venerdì, 05/12/2014
Ciao! Grazie per la risposta, alla fine ho risolto con un timer :)

PM Quote