andocken von Forms Problem!

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von BlackNetworkBit.

    andocken von Forms Problem!

    Edit by ErfinderDesRades: (Thema verschoben) Bitte richtiges UnterForum wählen!





    Also folgendes ->

    Problem1: ich habe ein Tool geschrieben mit 4 Forms die Docken Manchmal pass genau an ohne etwas am Code zu ändern nach dem nächsten malen Kompilieren tun sie dies nicht mehr...

    Problem2: die Docking Funktion so wie ich sie schrieb geht bei vielen richtig aber nicht bei allen gibt es eine Möglichkeit es 100%tig irgend wie andocken zu lassen das es bei jedem gleich aussieht ???


    vielen dank im voraus und hier der Code bis jetzt ->

    <Form1>

    VB.NET-Quellcode

    1. Private Sub Form1_LocationChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LocationChanged If CheckBox1.Checked Then Dim x As Integer Dim y As Integer
    2. x = Me.Location.X y = Me.Location.Y
    3. x = x + 352 y = y + 0
    4. My.Forms.Slot2.Location = New System.Drawing.Point(x, y) My.Forms.Slot2.CheckBox1.Checked = True My.Forms.Slot3.CheckBox1.Checked = True End If
    5. End Sub



    <Form2>

    VB.NET-Quellcode

    1. Private Sub Form1_LocationChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LocationChanged If CheckBox1.Checked Then Dim x As Integer Dim y As Integer
    2. x = Me.Location.X y = Me.Location.Y
    3. x = x + 352 y = y + 0
    4. My.Forms.Slot3.Location = New System.Drawing.Point(x, y) End If End Sub



    <Form3>

    VB.NET-Quellcode

    1. Private Sub Form1_LocationChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LocationChanged If CheckBox1.Checked Then Dim x As Integer Dim y As Integer
    2. x = Me.Location.X y = Me.Location.Y
    3. x = x + 352 y = y + 0
    4. My.Forms.Slot2.Location = New System.Drawing.Point(x, y) My.Forms.Slot2.CheckBox1.Checked = True My.Forms.Slot3.CheckBox1.Checked = True End If
    5. End Sub



    die Form1 heißt Slot1
    die Form2 heißt Slot2
    die Form3 heißt Slot3

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Willkommen im Forum :thumbup:
    Versuch es mal so:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private F2 As New Form2
    3. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. F2.Show()
    5. RightDock(F2)
    6. End Sub
    7. Private Sub Form1_locationChanged(sender As Object, e As EventArgs) Handles Me.LocationChanged
    8. RightDock(F2)
    9. End Sub
    10. Private Sub RightDock(F As Form)
    11. F.Location = New Point(Me.Location.X + Me.Width, Me.Location.Y)
    12. End Sub
    13. End Class

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Derfuhr“ ()

    Hallo @ESLWNB
    Ich war mal so frei und habe dir eine kleine Extension geschrieben ;)
    erst mal das in dein Project einfügen :

    VB.NET-Quellcode

    1. Imports System.Runtime.CompilerServices
    2. Module Docking
    3. <Extension()>
    4. Public Sub DockON(ByVal str As Form, form As Form, direction As Direction)
    5. Select Case direction
    6. Case direction.Down : str.Location = New Point(form.Location.X, form.Location.Y + form.Size.Height)
    7. Case direction.Left : str.Location = New Point(form.Location.X - str.Width, form.Location.Y)
    8. Case direction.Right : str.Location = New Point(form.Location.X + form.Size.Width, form.Location.Y)
    9. Case direction.Up : str.Location = New Point(form.Location.X, form.Location.Y - str.Size.Height)
    10. End Select
    11. End Sub
    12. Public Enum Direction
    13. Right = 0
    14. Left = 1
    15. Up = 2
    16. Down = 3
    17. End Enum
    18. End Module

    wenn du diesen schritt befolgt hast kannst du danach folgenden Aufruf tätigen :

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim form2 As New Form2
    3. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    4. form2.Show()
    5. End Sub
    6. Private Sub Form1_LocationChanged(sender As Object, e As System.EventArgs) Handles Me.LocationChanged
    7. form2.DockON(Me, Direction.Up) ' Direction.Up wäre dan über der Form Direction.Down unter der Form usw ;)
    8. End Sub
    9. End Class

    Wenn du willst kannst du sogar noch die form2 unbeweglich machen z.b so :

    VB.NET-Quellcode

    1. Public Class Form2
    2. Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    3. End Sub
    4. Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    5. If m.Msg = &H112 Then If (m.WParam.ToInt32() And &HFFF0) = &HF010 Then Exit Sub
    6. MyBase.WndProc(m)
    7. End Sub
    8. End Class


    hoffe ich konnte dir helfen ;)

    MFG BlackNetworkBit
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „BlackNetworkBit“ ()

    WOW danke ist nen riesen Projekt geworten was ich da mal vor jahren angefangen habe...
    danke für deine tolle hilfe damit könnte es fantastich werden :D

    edit:

    hm habe es mit beiden Methoden probiert und noch nicht zum laufen bekommen immer wird etwas unterstrichen ich tüftel mal noch weiter trozdem vielen dank für eure hilfe bin einfach zu blöd ...für das andocken der Formen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ESLWNB“ ()

    hast du alles schritt für schritt befolgt ;)
    hast du den Import gesetzt ?
    wenn ja dann müsste es eigentlich keine Fehler geben ;) bei funkt es nämlich ;)
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise

    so sieht es aus muss an mir liegen vielen dank für deine Hilfe erst mal bin zwar nicht mehr neu bei VB aber bin nicht so gut drin gerade was Module angeht fehlt es mir an Erfahrung :)



    Fehler 1 Der Attributspezifizierer ist keine vollständige Anweisung. Verwenden Sie eine Zeilenfortsetzung, um das Attribut auf die folgende Anweisung anzuwenden. C:\Users\ich\AppData\Local\Temporary Projects\Docking\Form1.vb 3 17 Docking


    Fehler 2 "DockON" ist kein Member von "Docking.Form2".

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ESLWNB“ ()

    Auf welches Framework kompilierst du es den ?
    Ab Framework 3.5 müsste es eigentlich gehen ;)
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise
    ja die gibt es ich schrei dri mal ganz kurz was ;) mir ist grade so oder so langweilig ;)
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise
    können wir machen ;)
    Hier ist dein Code :

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim form2 As New Form2
    3. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    4. form2.Show()
    5. Dim d As New Docking(Me)
    6. d.DockON(form2, Docking.Direction.Up)
    7. End Sub
    8. Private Sub Form1_LocationChanged(sender As Object, e As System.EventArgs) Handles Me.LocationChanged
    9. Dim d As New Docking(Me)
    10. d.DockON(form2, Docking.Direction.Up) ' Direction.Up wäre dan über der Form Direction.Down unter der Form usw ;)
    11. End Sub
    12. End Class
    13. Public Class Docking
    14. Dim form2 As New Form
    15. Public Sub New(ByVal form As Form)
    16. form2 = form
    17. End Sub
    18. Public Sub DockON(ByVal form1 As Form, direction As Direction)
    19. Select Case direction
    20. Case direction.Down : form1.Location = New Point(form2.Location.X, form2.Location.Y + form2.Size.Height)
    21. Case direction.Left : form1.Location = New Point(form2.Location.X - form1.Width, form2.Location.Y)
    22. Case direction.Right : form1.Location = New Point(form2.Location.X + form2.Size.Width, form2.Location.Y)
    23. Case direction.Up : form1.Location = New Point(form2.Location.X, form2.Location.Y - form1.Size.Height)
    24. End Select
    25. End Sub
    26. Public Enum Direction
    27. Right = 0
    28. Left = 1
    29. Up = 2
    30. Down = 3
    31. End Enum
    32. End Class

    die form2 kann so bleiben wie sie ist :)
    schön Framework 2.0 tauglich ;)
    MFG 0x426c61636b4e6574776f726b426974
    InOffical VB-Paradise IRC-Server
    webchat.freenode.net/
    Channel : ##vbparadise