Visual Basic 2010 Dynamisch erstellte Controls BringToFront und SendToBack

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ClonkAndre.

    Visual Basic 2010 Dynamisch erstellte Controls BringToFront und SendToBack

    Hallo liebe Community

    Ich habe folgenden Code der so aussieht:

    VB.NET-Quellcode

    1. Private Sub new_object(ByVal image_location As String, ByVal location As System.Drawing.Point)
    2. Dim new_picbox As New PictureBox
    3. Dim ctms As New ContextMenuStrip
    4. 'ContextMenuStrip
    5. ctms.Items.Add("In den Vordergrund", Nothing, AddressOf tofront)
    6. ctms.Items.Add("In den Hintergrund", Nothing, AddressOf toback)
    7. ctms.Items.Add("Element Verkaufen")
    8. 'Object
    9. new_picbox.ContextMenuStrip = ctms
    10. new_picbox.BackgroundImage = Image.FromFile(image_location)
    11. new_picbox.Location = location
    12. AddHandler new_picbox.MouseDown, AddressOf Control_MouseDown
    13. AddHandler new_picbox.MouseMove, AddressOf Control_MouseMove
    14. AddHandler new_picbox.MouseUp, AddressOf Control_MouseUp
    15. Panel1.Controls.Add(new_picbox)
    16. End Sub
    17. Private Sub tofront()
    18. 'IN DEN VORDERGRUND
    19. End Sub
    20. Private Sub toback()
    21. 'IN DEN HINTERGRUND
    22. End Sub


    So nun erstellt mein Code automatisch eine neue PictureBox wenn man auf einen Button klickt und es erstellt auch ein Contextmenustrip damit man ein Menü hat wenn man rechtsklick
    auf die picbox macht.

    So nun soll der Eintrag "In den Vordergrund" und "In den Hintergrund" das Control in den Hintergrund/Vordergrund setzen wenn man draufklickt
    natürlich soll nur das im Hintergund gesetzt werden wo drauf auch der Rechtsklick ausgeführt wurde.

    Hoffentlich sind das genug Informationen für euch
    Danke im Vorraus!
    Wenn ich dir auf irgendeiner Art und Weise helfen konnte, drück doch bitte den "Hilfreich" Button :thumbup:

    Für VB.NET Entwickler: Option Strict On nicht vergessen!
    Definiere

    ClonkAndre schrieb:

    "In den Vordergrund" und "In den Hintergrund"
    Was soll da passieren?
    =====
    Mach eine Form mit mehreren Controls.
    Sieh Dir die Prozedur InitializeComponent() dieser Form an.
    Ändere die Reihenfolge mit

    Sieh Dir wieder die Prozedur InitializeComponent() dieser Form an.
    Arbeite die Unterschiede heraus.
    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!
    @ClonkAndre: (korrekte) Kommasetzung bitte nicht vergessen. Es ist anstrengend, jeden Satz 3x lesen zu müssen, bevor man ihn versteht.
    Ohne jetzt den Wissenszuwachs durch RfGs Hinweis zunichte machen zu wollen (da folgendes nicht in der Designer.VB auftaucht): Jedes Control hat folgende 2 Methoden: .BringToFront(), .SendToBack()
    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.
    Tut mir leid das ich erst so spät antworte ich meine es so:

    Meine Controls werden Dynamisch erzeugt (also durch den Code) und jedes dieser Controls erhält ein ContextMenuStrip mit den Einträgen: "In den Hintergrund" und "In den Vordergrund" und wenn man halt auf
    ein Control z.b. In den Hintergrund drückt soll nur das im Hintergund gesetzt werden wo drauf auch der Rechtsklick ausgeführt wurde.

    Sollte verständlich sein oder?
    Wenn ich dir auf irgendeiner Art und Weise helfen konnte, drück doch bitte den "Hilfreich" Button :thumbup:

    Für VB.NET Entwickler: Option Strict On nicht vergessen!
    Ich hoffte, dass mein Beitrag auch verständlich war. Aber falls nicht: Gegeben sei ein ContextMenu, welches 2 Items hat: "nach vorn", "nach hinten". Der Rest geht so, inkl. Controlerzeugung:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim x As Integer = 10 'nur aus Geigelei, zur Control-Erzeugung
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. Dim NewButton As New Button
    5. NewButton.Left = 100 + x
    6. NewButton.Top = 100 + x
    7. NewButton.Height = 40
    8. NewButton.Width = 80
    9. NewButton.Name = "Btn" & (x / 10).ToString
    10. NewButton.Text = (x / 10).ToString
    11. NewButton.ContextMenuStrip = ContextMenuStrip1
    12. Me.Controls.Add(NewButton)
    13. x += 10
    14. End Sub
    15. 'hier wird's wichtig
    16. 'Fehlerbehandlung noch einbauen!
    17. Private Sub NachVornToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NachVornToolStripMenuItem.Click
    18. DirectCast(DirectCast(sender, ToolStripMenuItem).Owner, ContextMenuStrip).SourceControl.BringToFront()
    19. End Sub
    20. Private Sub NachHintenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NachHintenToolStripMenuItem.Click
    21. DirectCast(DirectCast(sender, ToolStripMenuItem).Owner, ContextMenuStrip).SourceControl.SendToBack()
    22. End Sub
    23. End Class


    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.