Sev*_*v09 1 vb.net visual-studio-2010 winforms
我正在创建一个具有多个窗体的应用程序.主窗体是可移动的,我想要一个基于主窗体所在位置的闪存确认窗口.
例如,主窗体打开,用户将其拖动到左侧200点.如何在按下按钮时确保确认窗口完全打开到该窗口的左侧?
内置属性(中心屏幕,中心父级等)不提供此功能.
我知道这些功能:
Form1.Left += 200
Run Code Online (Sandbox Code Playgroud)
和
Dim frmAccounts as new Form()
Set FrmAccounts.DesktopLocation = new Point(100,100)
Run Code Online (Sandbox Code Playgroud)
但这些都没有考虑到用户拖动.
有任何想法吗?
谢谢你的帮助.
为了让伙伴粘在主表单上,你必须使用主表单的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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2090 次 |
| 最近记录: |