我正在创建一个包含多个窗体的应用程序。主窗体是可移动的,我想要一个基于主窗体所在位置的闪存确认窗口。
例如,主窗体打开,用户将其拖动到左侧200点。按下按钮后,如何确保确认窗口完全打开到该窗口的左侧?
内置属性(中心屏幕,中心父级等)不提供此功能。
我知道这些功能:
Form1.Left += 200
和
Dim frmAccounts as new Form()
Set FrmAccounts.DesktopLocation = new Point(100,100)
但这些都没有考虑用户拖动。
有什么想法吗?
感谢您的帮助。
答案 0 :(得分:6)
为了让好友粘在主窗体上,你必须使用主窗体的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