Dynamisch erzeugten Button speichern

exiter28

Erfahrenes Mitglied
hey Leutz,

vielleicht kann mir jemand von Euch helfen.
Gibt es eine Möglichkeit, einen dynamisch erzeugten Button
auch wieder beim nächsten Neuaufruf der Form wieder
anzeigen zu lassen?

Vielleicht die Infos in einem file speichern?

Hat jemand eine Idee

Dank Euch schon mal im Voraus
 
Hi

Ich versteh dein Problem nicht.
Du hast doch ein bestimmte Bedingung unter der Button erzeugt wird. Diese prüfst du auch beim Erzeugen der Form. Wenn sie erfüllt ist, erzeugst du den Button.

Falls es nicht das ist, was du willst, bitte genauer werden! danke! :)
 
Danke für Deine Antwort.

Also folgendes:
Mit :

Private Sub cbNewVersion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbNewVersion.Click

Dim cb1 As New Button

With cb1
.Text = "Version"
.Location = New Point(10, i)
.Width = 100
.Height = 25
Me.Controls.Add(cb1)
AddHandler .Click, AddressOf cb1_Click
End With

End Sub

erzeuge ich zur Laufzeit einen Button. Und mit der Funktion:

Private Sub cb1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

End Sub

löse ich aktionen aus. Soweit so gut. Der Button cbNewVersion
ist bereits fest in der Form. Aber der dynamisch erzeugte Button
verschwindet bei einem nächsten "Neustart" der Form wieder.

Wie kann ich das in z.B.: einer ini-file mit FileStream oder so
speichern, damit der dynamische button auch beim nächsten
"Neustart wieder" erscheint?
 
Beendest du dein Programm komplett oder zeigst nur eine andere Form oder sowas an?

Wenn du nur die Form schließt, dann kannst du diese auch nur im Hintergrund weiterlaufen lassen und die neue Form in den Vordergrund holen.

Wäre gut, wenn du den Zweck deines Programms erklären könntest, mir ist irgendwie nicht klar, was du damit bezwecken willst. ;-)
 
die Form wird kpl. geschlossen.

Also das Programm sieht folgendermaßen aus:

eine Form mit Anfangs nur einem festen Button: Neue Version hinzufügen
Sobald hier geklickt wird, wird ein neuer Button erstellt.
Wird auf den neuen Button geklickt, wird ein externes Programm gestartet
(Infos hierfür werden aus einer ini-Datei geholt. Registrierung, usw...)

Kommt nun eine neue Version des externen Programms raus, kann
ein weiterer Button erstellt werden und das Programm mit diesem Button
dann gestartet werden.

Das Programm ist ein kleiner Helfer für meinen Beruf.

Ich hab bereits ein Programm. Aber das Problem ist, daß ich bereits bei
16 Versionen angelangt bin, und die Form nur 20 Buttons hat.
Damit ich nun nicht immer den Code ändern muss, hab ich mir gedacht,
das ganze dynamisch zu gestallten...

Hoffentlich hab ich das einigermaßen erklät :)
Danke
 
Ich habs zwar nicht komplett verstanden, aber egal erst mal.

Ich würde es ganz einfach mit einer Textdatei machen, da das Programm nur für dich ist und keine Verschlüsselung usw. braucht.

Code zum Speichern in Textdateien:

Code:
    If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
            SaveFileDialog1.Filter = "Textdateien (*.txt)|*.txt"
            If SaveFileDialog1.FileName <> "" Then
                FileOpen(2, SaveFileDialog1.FileName, OpenMode.Output)

                    PrintLine(2, ButtonPositionen)
        
                FileClose(2)
            End If
            FileClose(2)
        End If

Beim nächsten Laden dann einfach alles, was im Textdokument steht in eine ListBox oder so einlesen und diese dann in einer For-Schleife abarbeiten, bis zum Ende der ListBox.

Code kann ich dir hierfür auch liefern, wenn benötigt, habe so was ähnliches schon mal gemacht oder ich setze mich morgen nochmal hin, melde dich einfach nochmal.

Mfg
 
Hi

Zum einen sollten die alten VB-Funktionen nicht mehr verwendet werden.
VB.NET ist objektorientiert und sollte so auch verwendet werden.
Also bitte die entsprechenden Methoden der File-Klasse verwenden.
Zum anderen würde ich dir empfehlen in eine Xml-Datei zuspeichern. Du hast so die Möglichkeit, dir eine Config-Klasse zu schaffen, die du komplett per XmlSerializer (de)serialisieren kannst und musst so nicht über das umständlich und fehleranfällig Parsen eine Textdatei in Kauf nehmen.
 
Als Abschluss des Threads wäre es ganz schön, wenn du deinen Code noch hier lassen könntest, vielleicht ist es für jemanden mal nützlich.
 
Ich habs jetzt soweit gelöst mit einer INI-Datei.
Funktioniert sehr gut.

Danke an alle

Ein deiner Stelle hätte ich keine Ini-Datei genutzt. Nicht für umsonst bietet .NET keine Unterstützung mehr dafür (nur noch über Win32 API). Als Nachfolger wurden die Config-Dateien geschaffen, für die es auch die entsprechenden Klassen gibt. Alternativ dazu kann man selbst über den XmlSerializer selbst eine passende Struktur abbilden
 

Neue Beiträge

Zurück