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.

Foi útil?

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;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top