Как получить размер верхней границы NonClient?

Мне нужно выровнять вторичную форму по правой границе другой формы.

Когда мы компилируем и запускаем приложение COMPILED (не запуская его из IDE) с включенным AERO, происходит следующее:

введите здесь описание изображения

Итак, благодаря отличному ответу GJKH здесь: Как правильно определить размер неклиентской области для Aero?

... Теперь я могу выровнять вторичную форму справа от основной формы, но вторичная форма все еще не выровнена на несколько пикселей сверху:

введите здесь описание изображения

Это код, который я использую:

 If Debugger.IsAttached Then
      Form2.Location = New Point(Me.Right, Me.Top)
 Else
      Form2.Location = New Point((Me.Location.X + (Me.Width + (Me.Width - Me.ClientSize.Width))), Me.Location.Y)
 End If

person ElektroStudios    schedule 27.04.2013    source источник


Ответы (1)


Я поместил это в событие в Form1:

    Dim frm As New Form2

    frm.Show()

    frm.SetDesktopLocation(Me.Width + Me.DesktopLocation.X, Me.DesktopLocation.Y)

и form2 выстроились сразу справа от form1 с идеально выровненными вершинами.

person Richard    schedule 27.04.2013
comment
спасибо, но это работает только при отладке приложения, но не при ручном запуске скомпилированного приложения из-за пределов VS IDE (например, открытие папки \bin из проводника Windows и двойной щелчок по скомпилированному приложению), я проверил это. - person ElektroStudios; 27.04.2013
comment
У меня работало каждый раз даже вне IDE. Я пробовал это на VS2005 и VS2010 на двух разных компьютерах с двумя разными операционными системами (Server 2003 и Win7Pro). Возможно обновить .Net? - person Richard; 27.04.2013
comment
У меня Win7 x64 с FW4.5, не могли бы вы сказать мне архитектуру вашей win7 и версию FW для тестирования? - person ElektroStudios; 27.04.2013
comment
У меня Win7 x64 с FW4.0. Я изменил свою целевую FW в VS на другие FW, и до сих пор не было проблем. Установит FW4.5 и сообщит вам. - person Richard; 29.04.2013
comment
Я установил FW4.5, но, что интересно, я не смог установить целевую FW в VS на 4.5. Это возможно только в VS2012? Во всяком случае, у меня до сих пор не было проблем ни с одним из других фреймворков. - person Richard; 29.04.2013