WinForms: расположение относительной позиции двух элементов управления - PullRequest
0 голосов
/ 09 июля 2010

Я пишу приложение VB.Net WinForms, которое имеет несколько данных в любой заданной форме.В одной такой форме сетки данных загружаются в разделенные контейнеры, которые, в свою очередь, расположены на вкладке.Метод загрузки для каждой сетки данных является многопоточным, поэтому можно отобразить анимированную форму «Загрузка».Я хотел бы разместить новую загрузочную форму (которая меньше, чем сетка) сверху и предпочтительно в центре загружаемой сетки.

Какой самый простой способ найти расположение сеток в главной форме, чтобы я мог настроить расположение форм загрузки?

1 Ответ

2 голосов
/ 09 июля 2010

решаемая. Комментарии? Другие решения?

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

Private Function Get_Control_Location(ByVal control As Control) As Point

    If control.Name = "MainForm" Then
        Return control.Location
    End If

    Return control.Location + Get_Control_Location(control.Parent)

End Function

Затем рассчитайте размер новой загрузки так, чтобы она центрировалась на сетке.

 Dim x As Integer = (GridControl.Width / 2) - (PleaseWait.Width / 2)
 Dim y As Integer = (GridControl.Height / 2) - (PleaseWait.Height / 2)
 PleaseWait.Location = Get_Control_Location(GridControl) + New Point(x, y)

Надеюсь, это поможет кому-то еще!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...