Вопрос

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

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

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

Это было полезно?

Решение

Создайте панель с тем же размером и расположением, как у дерева. Добавьте это древовидное представление на панель и установите для него 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 будет держать рамку с изображением в центре панели. Установите изображение в поле вашего дерева. Когда обработка закончится, просто скройте окно с картинкой.

Другие советы

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

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

OnFormResize()
{
  Point ul = new Point((Form.ClientRectangle.Width - pictureBox1.Width) / 2,
      (Form.ClientRectangle.Height - pictureBox1.Height) / 2);
  pictureBox1.Location = ul;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top