Хранение Windows Forms Picturebox в середине TreeView - PullRequest
0 голосов
/ 31 июля 2009

У меня есть winform с 2 видами деревьев. мое левое дерево загружается с данными из рекламного сервера, который загружается нажатием на кнопку. Это вызывает моего фонового работника, который выбирает мои данные и строит мое дерево.

Теперь, когда я делаю это, я отключаю древовидный элемент управления и показываю графический блок с анимированным GIF-изображением. Поэтому, когда мой фоновый работник закончил, я включаю свой древовидный список и скрываю свой графический блок.

Итак, я хочу сделать так, чтобы окно с картинками оставалось в центре дерева. оба дерева находятся в разделенном контейнере. так может мне нужно получить границы этих панелей? Поэтому, когда размер формы изменяется, моя картинка остается в центре дерева.

Ответы [ 3 ]

0 голосов
/ 31 июля 2009
OnFormResize()
{
  Point ul = new Point((Form.ClientRectangle.Width - pictureBox1.Width) / 2,
      (Form.ClientRectangle.Height - pictureBox1.Height) / 2);
  pictureBox1.Location = ul;
}
0 голосов
/ 31 июля 2009

Создайте панель с тем же размером и расположением вашего дерева. Добавьте это древовидное представление на панель и установите для него значение DockStyle.Fill . Добавьте изображение на панель и установите для якоря значение AnchorStyles.None .

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

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

Стиль якоря AnchorStyles.None будет держать вашу рамку в центре панели. Установите изображение в поле вашего дерева. Как только ваша обработка закончена, просто скройте окно с картинкой.

0 голосов
/ 31 июля 2009

Непонятно, как настроить форму, но вы хотите либо поместить логику в событие Resize формы, либо событие Resize TreeView.

Когда любой из них изменяется, поместите изображение в месте = на половине пути TreeView, за вычетом половины ширины изображения, повторите для высоты.

...