PictureBox in Form1 immer ganz zuvorderst einfügen!

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    PictureBox in Form1 immer ganz zuvorderst einfügen!

    Hallo Zusammen!
    Ich erstelle eine PictureBox und füge sie einer Form hinzu. Nun möchte ich, dass die eingefügte PictureBox immer an vorderster Stelle eingefügt wird. Das heisst immer im Vordergrund und vollständig zu sehen ist. So erstelle ich meine PictureBox und füge sie der Form hinzu:


    picBox =
    New PictureBox


    picBox.Location = New System.Drawing.Point(20, 50)
    picBox.Name = "Box1"


    picBox.Image = Image.FromFile("C:\TestImage")
    picBox.Size = New System.Drawing.Size(100, 164)
    picBox.SizeMode = PictureBoxSizeMode.StretchImage
    Me.Controls.Add(picBox)



    Ich versuchte schon mit...
    picBox.BringToFront() doch dies klappt nicht. Könnt ihr mir weiterhelfen?
    Vielen Dank für Eure Hilfe!
    Gruss Franhu

    Ja genau die PictureBoxen überlappen sich. Nein sieht nicht so chaotisch aus ;) die neu hinzugefügte PictureBox sollte genau die hälfe der bestehenden PB überlappen. Nur überlappt sie sie nicht sonder sie wird in den Hintergrund gestellt. Ich möchte sie aber ganz im Vordergrund haben?
    dein code sollte gleichmal fehler werfen, denkich, weil mehreren Picboxen derselbe Name zugeordnet wird.
    Wenn die PBs im selben Container - ich nehme an "Me" ist ein Form? - landen, sollte die neueste auch obenauf liegen, glaubich

    kannst evtl. probieren

    VB.NET-Quellcode

    1. Me.Controls.Insert(0,picBox)
    Da ist Me.Controls dran Schuld.
    Teste mal folgendes Beispiel (Form mit 2 Button, Pfade zu gültigen Bildern setzen):
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim picBox1 As PictureBox = Nothing
    3. Dim picBox2 As PictureBox = Nothing
    4. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    5. If (picBox1 IsNot Nothing) Then
    6. Me.Controls.Remove(picBox1)
    7. End If
    8. picBox1 = New PictureBox()
    9. picBox1.Location = New System.Drawing.Point(20, 50)
    10. picBox1.Name = "Box1"
    11. picBox1.Image = Image.FromFile("C:\Temp\A01.bmp")
    12. picBox1.Size = New System.Drawing.Size(100, 164)
    13. picBox1.SizeMode = PictureBoxSizeMode.StretchImage
    14. If (picBox2 IsNot Nothing) Then
    15. Me.Controls.Remove(picBox2)
    16. End If
    17. Me.Controls.Add(picBox1)
    18. If (picBox2 IsNot Nothing) Then
    19. Me.Controls.Add(picBox2)
    20. End If
    21. End Sub
    22. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    23. If (picBox2 IsNot Nothing) Then
    24. Me.Controls.Remove(picBox2)
    25. End If
    26. picBox2 = New PictureBox()
    27. picBox2.Location = New System.Drawing.Point(40, 50)
    28. picBox2.Name = "Box2"
    29. picBox2.Image = Image.FromFile("C:\Temp\A02.bmp")
    30. picBox2.Size = New System.Drawing.Size(100, 164)
    31. picBox2.SizeMode = PictureBoxSizeMode.StretchImage
    32. If (picBox1 IsNot Nothing) Then
    33. Me.Controls.Remove(picBox1)
    34. End If
    35. Me.Controls.Add(picBox2)
    36. If (picBox1 IsNot Nothing) Then
    37. Me.Controls.Add(picBox1)
    38. End If
    39. End Sub
    40. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Du sollst ja auch

    VB.NET-Quellcode

    1. Me.Controls.Remove(picBox1)

    und

    VB.NET-Quellcode

    1. Me.Controls.Add(picBox1)

    verwenden, nicht Me.Controls.Insert
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Sorry hab gepostet bevor ich deinen Beitrag gesehen habe! Vielen Dank für den Code. Schaue einmal ob ich damit etwas anfangen kann. Ich füge vielleicht max 20 pictureBoxen mit immer anderem Namen und anderem Bild ein. Dies passiert beim drücken eines Buttons automatisch mit Hilfe eines Timers.


    an ErfinderDesRades: Insert is not a Member of 'System....Controls.ControlCollection'

    Frage: Funktioniert es nicth weil ich immer mit picBox = New PictureBox arbeite? ich ändere ja nur immer

    pictureBox.name = "box" & x

    Ich ändere den Namen der neuen Boxes aber das Neue PictureBox objekt heisst immer gleich?




    Danke für deine Hilfe.

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

    dashier geht bei mir:

    VB.NET-Quellcode

    1. Dim picBox As New PictureBox
    2. Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    3. Dim loc = picBox.Location + New Size(30, 30)
    4. picBox = New PictureBox
    5. picBox.Location = loc
    6. picBox.Image = Image.FromFile("..\..\VSFolder_open.bmp")
    7. picBox.Size = New System.Drawing.Size(100, 164)
    8. picBox.SizeMode = PictureBoxSizeMode.StretchImage
    9. Me.Controls.Add(picBox)
    10. picBox.BringToFront()
    11. End Sub