Absolute Position eines Controls

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von woeh.

    Absolute Position eines Controls

    Hallo,ich habe mehrere TextBoxen, die sich auf einem Panel befinden.
    Das Panel befindet sich in eine GroupBox, die sich wiederrum in einer
    GroupBox befindet, welches sich auf einem TabControl befindet, welches
    sich auf einer Form befindet.

    ich möchte nun bei eine MouseEvent
    auf benannter TextBox, dass eine Form aufpopt auf der sich eine TextBox
    mit MultiLine befindet. Diese Form soll sich genau auf erster benannter
    TextBox positionieren.

    Ich bekomme das iwie nicht hin.

    das funktioniert nicht:

    VB.NET-Quellcode

    1. Public Sub ShowMultiTextBox(ByVal TextBox As TextBoxBase)
    2. Dim frmTxt As New frmTextbox
    3. Dim ScreenPos As Point = TextBox.PointToScreen(New Point(0, 0))
    4. frmTxt.Location = ScreenPos
    5. frmTxt.Size = New Size(TextBox.Width, TextBox.Height * 5)
    6. frmTxt.ShowDialog(mainform)
    7. End Sub


    und das ebenfalls nicht:

    VB.NET-Quellcode

    1. Public Sub ShowMultiTextBox(ByVal TextBox As TextBoxBase)
    2. Dim frmTxt As New frmTextbox
    3. Dim ScreenPos As Point = TextBox.PointToScreen(New Point(0, 0))
    4. frmTxt.Location = frmTxt.PointToClient(ScreenPos)
    5. frmTxt.Size = New Size(TextBox.Width, TextBox.Height * 5)
    6. frmTxt.ShowDialog()
    7. End Sub

    hat jmd ne idee ? ;(
    1. Dein frmTxt As New frmTextBox sollte den Rahmen eines Using-Blocks bilden, Stichwort Dispose.
    2. Dir fehlt ne bestimmte Zeile, in der Du festlegst, dass Du die Position bestimmst, und nicht Windows.

    VB.NET-Quellcode

    1. Public Sub ShowMultiTextBox(TextBox As TextBoxBase) 'ByVal ist überflüssig
    2. Dim ScreenPos As Point = TextBox.PointToScreen(New Point(0, 0))
    3. Using frmTxt As New frmTextBox 'ruft am Ende automatisch Dispose auf, was bisher in Deinem Code fehlt
    4. frmTxt.Size = New Size(TextBox.Width, TextBox.Height * 5)
    5. frmTxt.StartPosition = FormStartPosition.Manual 'that's the point!
    6. frmTxt.Location = ScreenPos
    7. frmTxt.ShowDialog(Me) 'Wenn diese Sub in der Hauptform liegt, reicht ein Me statt mainform
    8. End Using
    9. End Sub

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.