Domanda

Ho un winform con 2 treevview. il mio treeview sinistro viene caricato con i dati di un adserver che viene caricato facendo clic su un pulsante. Questo innesca il mio backgroundworker che recupera i miei dati e costruisce il mio albero.

Ora, mentre sto facendo questo, sto disabilitando il controllo treeview e mostrando una finestra immagine con una gif animata su di essa. Quindi, quando il mio backgroundworker è finito, riattivo il mio treeview e nascondo la mia casella di immagine.

Quindi quello che voglio fare è che la casella immagine rimanga al centro della vista ad albero. entrambi i treevview sono su un contenitore diviso. quindi forse ho bisogno di ottenere i bordi di quei pannelli? Quindi, quando le dimensioni del modulo cambiano, la mia casella immagine rimane ben al centro del treeview.

È stato utile?

Soluzione

Crea un pannello con le stesse dimensioni e posizione del tuo treeview. Aggiungi questa treeview nel pannello e impostala su DockStyle.Fill . Aggiungi la tua foto al pannello e imposta l'ancoraggio su AnchorStyles.None .

this.panel1.Controls.Add(treeView2);
this.panel1.Controls.Add(pictureBox1);

this.treeView2.Dock = DockStyle.Fill;
this.pictureBox1.Anchor = AnchorStyles.None;

Lo stile di ancoraggio AnchorStyles.None manterrà la finestra al centro del riquadro. Imposta la tua casella immagine davanti alla vista ad albero. Una volta terminata l'elaborazione, nascondi la finestra dell'immagine.

Altri suggerimenti

Non è chiaro come impostare il modulo, ma si desidera inserire la logica nel modulo Resize event o nell'evento TreeView Resize.

Quando uno dei due viene ridimensionato, posiziona l'immagine nella posizione = a metà strada attraverso TreeView, meno metà della larghezza dell'immagine, ripeti per l'altezza.

OnFormResize()
{
  Point ul = new Point((Form.ClientRectangle.Width - pictureBox1.Width) / 2,
      (Form.ClientRectangle.Height - pictureBox1.Height) / 2);
  pictureBox1.Location = ul;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top