Mantendo Windows Forms Picturebox no meio de TreeView
-
06-07-2019 - |
Pergunta
Eu tenho um winform com 2 treeviews. minha treeview esquerda está sendo carregado com dados de um servidor de anúncios que está sendo carregado, clicando em um botão. Isso desencadeia a minha backgroundworker que vai buscar os meus dados e constrói-se a minha árvore.
Agora, enquanto isso eu estou a desativação do controle treeview e mostrando um picturebox com um gif animado sobre ele. Assim, quando meu backgroundworker está terminado habilito de volta o meu treeview e esconder meu picturebox.
Então, o que eu quero fazer é que as estadias PictureBox no centro da árvore. ambos são treeviews em um recipiente Splitted. talvez por isso eu preciso para obter as fronteiras desses painéis? Então, quando o tamanho das mudanças de forma, meus PictureBox estadias muito bem no centro da árvore.
Solução
Criar um painel para o mesmo tamanho ea localização da sua árvore. Adicione esta treeview no painel e ajuste-o para DockStyle.Fill . Adicione sua imagem ao painel e definir a âncora para AnchorStyles.None .
this.panel1.Controls.Add(treeView2);
this.panel1.Controls.Add(pictureBox1);
this.treeView2.Dock = DockStyle.Fill;
this.pictureBox1.Anchor = AnchorStyles.None;
O estilo de âncora AnchorStyles.None irá manter a sua caixa de imagem no centro do painel. Defina sua caixa de imagem na frente de sua exibição em árvore. Uma vez, o seu processamento é mais simplesmente esconder a caixa de imagem.
Outras dicas
Não está claro de como você configurar sua forma, mas você quer quer colocar a lógica na forma Resize evento ou o evento TreeView Redimensionar.
Quando um é redimensionada, coloque a imagem no local = metade do caminho em todo o TreeView, menos de metade da Largura da sua imagem, repita para a altura.
OnFormResize()
{
Point ul = new Point((Form.ClientRectangle.Width - pictureBox1.Width) / 2,
(Form.ClientRectangle.Height - pictureBox1.Height) / 2);
pictureBox1.Location = ul;
}