Control erzeugen und "speichern" geschlossen 

  • Ersteller Ersteller geronimo345
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
G

geronimo345

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?
 
@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...:

Code:
Panel pan = new Panel();
pan.AutoSize = true;
pan.Visible = true;
pan.BackColor = Color.Silver;

GroupBox gro = new GroupBox();
gro.Text = textBox1.Text;
gro.Width = 952;
gro.Height = 210;
gro.Visible = true;
gro.Left = 30;
gro.Top = 5;


TextBox text = new TextBox();
text.Text = textBox2.Text;
text.Anchor = (AnchorStyles.Bottom | AnchorStyles.Right);
text.Width = 190;
text.Height = 20;

RichTextBox rtext = new RichTextBox();
rtext.Text = richTextBox1.Text;
rtext.Width = 945;
rtext.Height = 168;
rtext.Visible = true;


gro.Controls.Add(text);
gro.Controls.Add(rtext);
pan.Controls.Add(gro);
((Form1)Application.OpenForms[0]).flowLayoutPanel1.Controls.Add(pan);

... 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:
http://openbook.galileocomputing.de/visual_csharp/visual_csharp_16_001.htm#mj19ce80bce01a8aa6649dcbf039fc0693

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."
 
Zuletzt bearbeitet von einem Moderator:
@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).
 
Vielen Dank für deine Hilfe, wasawasa! :thx:

Ich werde das wie gesagt mit Form.Load() machen.

Da sich das Problem erledigt hat, kann der Thread closed werden.

mfg
geronimo345
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben Unten