【问题标题】:How to get the NonClient Upper border size?如何获取 NonClient 上边框大小?
【发布时间】:2013-04-21 06:49:24
【问题描述】:

我需要将辅助表单对齐到其他表单的右边框。

当我们在启用 AERO 的情况下编译和运行 COMPILED 应用程序(而不是从 IDE 运行它)时,会发生以下情况:

感谢 GJKH 的大力支持:How to determine correctly the Non-Client Area Size for 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

【问题讨论】:

    标签: .net vb.net winforms nonclient nonclient-area


    【解决方案1】:

    我把它放在 Form1 中的一个事件中:

        Dim frm As New Form2
    
        frm.Show()
    
        frm.SetDesktopLocation(Me.Width + Me.DesktopLocation.X, Me.DesktopLocation.Y)
    

    和 form2 紧挨着 form1 的右侧排列,它们的顶部完美对齐。

    【讨论】:

    • 谢谢,但这仅在调试应用程序时有效,但在从 VS IDE 外部手动启动已编译的应用程序时无效(例如从 Windows 资源管理器中打开“\bin”文件夹并双击已编译的应用程序),我已经测试过了。
    • 即使在 IDE 之外,每次都为我工作。我在运行两种不同操作系统(Server 2003 和 Win7Pro)的两台不同计算机上的 VS2005 和 VS2010 上尝试了这个。也许更新.Net?
    • 我有 Win7 x64 和 FW4.5,你能告诉我你的 win7 的架构和测试它的 FW 版本吗?
    • 我有 Win7 x64 和 FW4.0。我将 VS 中的目标固件更改为其他固件,但仍然没有问题。将安装 FW4.5 并通知您。
    • 我安装了 FW4.5,但有趣的是我无法将 VS 中的目标 FW 设置为 4.5。这只能在VS2012中实现吗?无论如何,我仍然没有遇到任何其他框架的问题。
    猜你喜欢
    • 1970-01-01
    • 2016-01-18
    • 2013-06-26
    • 2020-04-29
    • 2012-04-15
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    相关资源
    最近更新 更多