【问题标题】:Setting a windows form's screen position based on another form's current position根据另一家公司的当前位置设置窗体屏幕位置
【发布时间】:2014-02-14 21:57:37
【问题描述】:

我正在创建一个具有多个窗体的应用程序。主窗体是可移动的,我希望根据主窗体所在的位置闪烁一个确认窗口。

例如,主窗体打开,用户将其向左拖动 200 点。如何确保确认窗口在按下按钮时正好在该窗口的左侧打开?

内置属性(中心屏幕、中心父级等)不提供此功能。

我知道这些功能:

Form1.Left += 200

Dim frmAccounts as new Form()
Set FrmAccounts.DesktopLocation = new Point(100,100)

但这些都没有考虑到用户拖动。

有什么想法吗?

感谢您的帮助。

【问题讨论】:

    标签: vb.net winforms visual-studio-2010


    【解决方案1】:

    为了让好友一直粘在主窗体上,您必须使用主窗体的 LocationChanged 事件来知道何时移动它。而且您必须在显示之前对其进行定位,这有点棘手,因为表单可能会在具有不同 DPI 设置的机器上重新缩放。最好的时间是当伙伴的 Load 事件触发时,它会被重新调整。一些示例代码:

    Public Class Form1
      Dim buddy As Form
    
      Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If buddy Is Nothing Then
          buddy = New Form2
          AddHandler buddy.Load, AddressOf MoveBuddy
          AddHandler Me.LocationChanged, AddressOf MoveBuddy
          AddHandler buddy.FormClosed, Sub() buddy = Nothing
          buddy.Show(Me)
        End If
      End Sub
    
      Private Sub MoveBuddy(sender As Object, e As EventArgs)
        buddy.Bounds = New Rectangle(Me.Left - buddy.Width, Me.Top, buddy.Width, buddy.Height)
      End Sub
    End Class
    

    【讨论】:

    • 感谢您的回答!它工作得很好。知道如何调整代码以使用不透明度为 0% 的表单吗?我有一个在表单中淡出然后淡出的脚本。
    • 没关系,我能够让它工作。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    相关资源
    最近更新 更多