vb.net UserControl - Button in FlowlayoutPanel hinzufügen geht nicht

  • VB.NET

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

    vb.net UserControl - Button in FlowlayoutPanel hinzufügen geht nicht

    Hey,

    ich habe in meinen UserControl ein FlowLayoutPanel und würde dort gerne einen Button hinzufügen. Doch irgendwie wird der Button nicht angezeigt aber er scheint da zu sein.
    Mein Code:

    VB.NET-Quellcode

    1. Public Sub CreateNewQuicklauch(ByVal _name As String, ByVal _filelocation As String)
    2. Dim btn As New System.Windows.Forms.Button
    3. btn.Size = New System.Drawing.Size(267, 23)
    4. btn.Name = _name
    5. btn.Text = _name
    6. btn.Tag = _filelocation
    7. AddHandler btn.Click, AddressOf btn_clicked
    8. Me.quicklauch_btns.Controls.Add(btn)
    9. End Sub
    10. Public Sub btn_clicked(sender As Object, e As EventArgs)
    11. MsgBox(DirectCast(sender, Button).Text)
    12. End Sub


    für mehr infos einfach bescheid sagen :)

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ClonkAndre“ () aus folgendem Grund: Titel geändert

    Wo steht denn die Methode CreateNewQuicklauch? In der Form in der auch dein FlowLayoutPanel drauf ist?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @mrMo
    Jop nicht außerhalb oder so

    //Edit
    Man muss aber noch dazu sagen das ich die Methode über eine andere Form steuere
    So öffne ich die neue Form:

    VB.NET-Quellcode

    1. Dim setting As New settings
    2. setting.TabControl1.SelectedTab = setting.TabPage1
    3. setting.Show()

    (wenn ich versuche die Form "normal" zu öffnen wird das "settings.show" blau unterstrichen)

    und wie ich von der Settings Form auf die Methode zugreife:

    VB.NET-Quellcode

    1. Dim create As New launcher_UC
    2. create.CreateNewQuicklauch(name_txtbox.Text, file_txtbox.Text)

    (auch hier wenn ich versuche die Methode von der Settings Form anzusprechen wird das "launcher_UC.CreateNewQuicklauch" blau unterstrichen)

    Die Methode wird auf jeden fall aufgerufen ich habe es mal mit einer MsgBox getestet aber wenn ich versuche damit ein Control zu erstellen geht es nicht :/ :/

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „ClonkAndre“ () aus folgendem Grund: Mehr Informationen

    ClonkAndre schrieb:

    wenn ich versuche die Form "normal" zu öffnen
    Was heißt bei Dir normal öffnen? Was ist settings?

    ClonkAndre schrieb:

    wird das "settings.show" blau unterstrichen

    ClonkAndre schrieb:

    wird das "launcher_UC.CreateNewQuicklauch" blau unterstrichen
    Und wenn Du mit der Maus drüber gehst, wird auch angezeigt, was das Problem ist.
    Wenn ich ein UC erstelle, Deinen CreateNewQuicklauch-Code dort reinhaue, auf meinem Form jenes UC draufziehe und dann in einem Button die CreateNewQuicklauch-Prozedur aufrufe, geht es problemlos. Erstellst Du die UC-Instanz zur Laufzeit?

    Ach, Moment. setting und launcher_UC sind Deine UC-Klassen, richtig? Und wenn Du setting.Show oder launcher_UC.Show schreibst, dann kommen die blauen Markierungen. Oh Mann, ich könnte sagen: Erspar Dir die Mühe, denn ich weiß, was für ein Fehler kommt. Aber tu es trotzdem. Und dann bedenke, dass solch Code nur für Forms geht, aber man sowas gefälligst lassen sollte, wie ich hier zu lesen gebe. Nachdem Du korrekt Deine UC-Instanzen wie in Deinem Post#3 instanziiert hast, musst Du diese Instanzen auch dem Form hinzufügen: Me.Controls.Add(create)
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

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

    ClonkAndre schrieb:

    und wie ich von der Settings Form auf die Methode zugreife:

    VB.NET-Quellcode

    1. Dim create As New launcher_UC
    2. create.CreateNewQuicklauch(name_txtbox.Text, file_txtbox.Text)
    Überleg mal, was das Schlüsselwort New bedeutet.
    Erst überlegen - dann hier klicksen und die Antwort spickeln!
    Da wird also ein neuer (new!) launcher_UC erstellt.
    Und dieser neue(!!) launcher_UC führt .CreateNewQuicklauch() aus.
    Fein.
    Aber wird der neue(!!) launcher_UC auch angezeigt?
    Ich möchte wetten, dass nicht.
    Was angezeigt wird ist bestimmt ein bereits vorhandener launcher_UC.
    Jo, der weiss natürlich nix davon, dasses da iwo einen neuen launcher_UC, gibt, welcher .CreateNewQuicklauch() ausgeführt hat.