SuspendLayout e ResumeLayout

martedì 12 ottobre 2010 - 14.07
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows XP

boc_babi Profilo | Junior Member

Ciao,

ho provato ad utilizzare i comandi SuspendLayout e ResumeLayout durante il riempimento di una DataGridView per evitare che durante il riempimento della stessa il sistema si bloccasse per poi riprendere il corretto funzionamento una volta terminato il riempimento della DataGridView.

Il problema è che i comandi non funzionano o meglio non vedo l'effetto desiderato. La DataGridView continua a bloccarsi durante il riempimento.

Avete suggerimenti in tal proposito ?

Grazie, BOC

giorgiodipietro Profilo | Junior Member

Ciao, ho avuto anche io una necessità simile e ho risolto sfruttando gli eventi di un oggetto BackgroundWorker e spezzando il caricamento dei dati in scaglioni..
Il caricamento vero e proprio viene effettuato all'interno dell'evento BackgroundWorker_DoWork. Invece all'interno dell'evento Click del bottone per avviare il caricamento lancio il metodo BackgroundWorker.RunWorkerAsync.

Ti scrivo qui un piccolo esempio..

Dim WithEvents T As New BackgroundWorker

Private Sub Btn_Click() 'evento del bottone che fa partire il caricamento
T.RunWorkerAsync
End Sub

Private Sub T_DoWork() handles T.DoWork
'procedure che utilizzi per caricare i dati, se sono tanti ti consiglio a scaglioni
DataGridView.Refresh
End Sub

Spero di esserti stato utile e di aver capito e risolto il problema.

Giorgio

Non si finisce mai di imparare!!

boc_babi Profilo | Junior Member

Ciao,
grazie mille per la risposta.
Avevo già pensato ad una soluzione come quella che mi hai prospettato, ma mi ero imposto di non seguirla poiché, e quello che ti dico adesso non appare nel mio post, se eseguo il riempimento della DataGridView da un form che non contiene la DataGridView il problema non esiste. Ovvero la DataGridView viene riempita immediatamente.
Mi spiego meglio con un esempio:
form con Bottone per riempire la DataGridView, DataGridView -> premo il bottone e la DataGridView viene riempita con un centinaio di righe il sistema si blocca per 6/7 secondi.
form con Bottone per riempire la DataGridView presente in un altro form -> premo il bottone e la DataGridView dell'altro form viene riempita con un centinaio di righe in maniera istantanea
Quindi ritengo sia proprio un problema di refresh o repaint della DataGridView.

Se non trovo altra soluzione sarò comunque obbligato ad utilizzare il tuo suggerimento.

Grazie ancora, BOC
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5