Qual è il modo migliore per eseguire il throbber in C#?
Domanda
Nello specifico, quello che sto cercando di fare è far vibrare le icone dei nodi nel mio controllo System.Windows.Forms.TreeView mentre è in corso una lunga operazione di caricamento.
Soluzione
Se carichi ciascun fotogramma in un ImageList, puoi utilizzare un ciclo per aggiornare ciascun fotogramma.Esempio:
bool runThrobber = true; private void AnimateThrobber(TreeNode animatedNode) { BackgroundWorker bg = new BackgroundWorker(); bg.DoWork += new DoWorkEventHandler(delegate { while (runThrobber) { this.Invoke((MethodInvoker)delegate { animatedNode.SelectedImageIndex++; if (animatedNode.SelectedImageIndex >= imageList1.Images.Count) > animatedNode.SelectedImageIndex = 0; }); Thread.Sleep(100); } }); bg.RunWorkerAsync(); }
Ovviamente ci sono più di un paio di modi per implementarlo, ma ecco l'idea di base.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow