Tengo un form principal y quiero abrir un form secundario pero que este abra al costado izquierdo del principal como podría hacerlo?
¿Solamente quieres que el Form secundario se muestre pegado al borde izquierdo del Form prinncipal, o además quieres mantenerlo pegado "para siempre"?.
En el primer caso:
Public Class Form1
Private srcForm As Form = Me
Private dstForm As Form = Form2
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.dstForm.StartPosition = FormStartPosition.Manual
Me.dstForm.Location = New Point((Me.srcForm.Location.X - Me.dstForm.Width), Me.srcForm.Location.Y)
Me.dstForm.Show()
End Sub
End Class
En el segundo caso:
Public Class Form1
Private srcForm As Form = Me
Private dstForm As Form = Form2
Friend Shared dockedFormIsMoving As Boolean
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.dstForm.Owner = Me.srcForm
Me.dstForm.StartPosition = FormStartPosition.Manual
Me.dstForm.Location = New Point((Me.srcForm.Location.X - Me.dstForm.Width), Me.srcForm.Location.Y)
Me.dstForm.Show()
End Sub
Private Sub Form1_Move(sender As Object, e As EventArgs) Handles MyBase.Move
If Not (dockedFormIsMoving) Then
Me.dstForm.Location = New Point((Me.srcForm.Location.X - Me.dstForm.Width), Me.srcForm.Location.Y)
End If
End Sub
End Class
Public Class Form2
Private Sub Form2_Move(sender As Object, e As EventArgs) Handles MyBase.Move
If (Me.Owner IsNot Nothing) Then
Form1.dockedFormisMoving = True
Me.Owner.Location = New Point((Me.Location.X + Me.Width), Me.Location.Y)
Form1.dockedFormisMoving = False
End If
End Sub
End Class
PD: si quieres una solución más sofisticada (te aviso, son miles de lineas, con varias enumeraciones y tipos ntivos, pero sería copiar y pegar lo que te muestre, luego es bien facil de usar), pidemelo y te mostraré un sistema de
docking de ventanas (
IWin32Window ) con varias funcionalidades adicionales que implementé en mi framework comercial
ElektroKit.
Saludos.