Control erzeugen und "speichern"

  • geschlossen
  • C#

  • geronimo345
  • 2841 Aufrufe 6 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Control erzeugen und "speichern"

    Hallo alle zusammen,

    Ich möchte per Code ein Panel mit einer groupBox, einer textBox und einer richTextBox (alles im Panel) erstellen, was nicht weiter schwer ist.

    Nun habe ich aber folgendes Problem:
    Ich möchte, dass dieses Panel beim Schließen des Programms nicht verschwindet, sondern beim Programmstart wieder verfügbar ist. Es soll sozusagen "gespeichert" werden.

    Wie kann man das machen? muss man das in Form_Load () dann immer wieder neu erzeugen?


    Ich hoffe, ich habe mich verständlich ausgedrückt und dass mir jemand da weiterhelfen kann :D

    mfg
    geronimo345
  • Da bleiben noch Fragen ...
    Es darf beim Schließen schon verschwinden. Es soll aber beim Programmstart wieder aufgelegt werden?
    Soll der Inhalt der Textboxen wieder restauriert werden?
    Es ist besser zu schweigen und für einen Narren gehalten zu werden, als zu reden und damit alle Zweifel zu beseitigen ...
  • @wasawasa

    Das Panel soll weder beim schließen noch beim Starten des Programms verschwinden. Die Daten der Steuerelemnte werden dann auch beim Starten aus einer XML Datei gelesen.

    Wenn ich aus der Toolbox Elemente erzeuge, sind diese ständig verfügbar. Solche möchte ich per Coder erzeugen. Bloß wenn ich es so mache...:

    Quellcode

    1. Panel pan = new Panel();
    2. pan.AutoSize = true;
    3. pan.Visible = true;
    4. pan.BackColor = Color.Silver;
    5. GroupBox gro = new GroupBox();
    6. gro.Text = textBox1.Text;
    7. gro.Width = 952;
    8. gro.Height = 210;
    9. gro.Visible = true;
    10. gro.Left = 30;
    11. gro.Top = 5;
    12. TextBox text = new TextBox();
    13. text.Text = textBox2.Text;
    14. text.Anchor = (AnchorStyles.Bottom | AnchorStyles.Right);
    15. text.Width = 190;
    16. text.Height = 20;
    17. RichTextBox rtext = new RichTextBox();
    18. rtext.Text = richTextBox1.Text;
    19. rtext.Width = 945;
    20. rtext.Height = 168;
    21. rtext.Visible = true;
    22. gro.Controls.Add(text);
    23. gro.Controls.Add(rtext);
    24. pan.Controls.Add(gro);
    25. ((Form1)Application.OpenForms[0]).flowLayoutPanel1.Controls.Add(pan);
    Alles anzeigen


    ... wird das Panel zwar erzeugt, wird aber nicht beibehalten. Beim Programmstart wird es anscheinend nicht neu erzeugt...

    mfg
    geronimo345
  • Nun ja - statisch ist statisch und dynamisch ist dynamisch.

    Macht man es statisch, dann ist es immer da (sozusagen mitcompiliert).
    Macht man es dynamisch, dann muss man es selbst zusammenbauen (z.B. in Form_Load).

    Alternativ könnte Dir das MDI-Konzept weiterhelfen:
    openbook.galileocomputing.de/v…ce01a8aa6649dcbf039fc0693

    Ein Zitat aus dem Buch: "Kennzeichnend für MDI-Anwendungen ist ein übergeordnetes Hauptfenster, das im Zusammenspiel mit den ihm untergeordneten Fenstern besondere Verhaltensweisen zeigt."
    Es ist besser zu schweigen und für einen Narren gehalten zu werden, als zu reden und damit alle Zweifel zu beseitigen ...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von wasawasa ()

  • @wasawasa

    Vielen Dank für deine Hilfe!

    Das einfachste wäre, denke ich, wenn ich die verschiedenen GroupBoxen dynamisch in Form.Load() erzeuge. Ich werde es dann so machen, dass für jeden Knoten dann eine Groupbox erstellt wird, sobald das Fenster geladen wird.
    Wie ich das statisch schaffen soll ist mir nen Rätsel :).

    Nimmt eine dynamische Erzeugung in Form.Load() viel Resourcen in Anspruch?

    mfg
    geronimo345
  • Der Resourcenverbrauch dürfte im Vergleich zum Nachladen der Daten vernachlässigbar zu sein. "Form_load" ist schon der richtige Weg (zumindest aus meiner Sicht).
    Es ist besser zu schweigen und für einen Narren gehalten zu werden, als zu reden und damit alle Zweifel zu beseitigen ...