C# Element nachträglich einem Panel hinzufügen

kiname

Cadet 3rd Year
Registriert
Nov. 2014
Beiträge
56
Hallo,

ich möchte eine dynamische gui entwickeln die sich je nach ausgewählter Datenbank anpasst.

Um testweise eine TextBox hinzuzufügen habe ich ein kleines Programm geschrieben das jedoch eine NullReferenceException wirft wenn ich dem mit "Drag-and-Drop" erstellten Panel hinzufüge.

Fehlermeldung: "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."

Code:
    public partial class Form1 : Form
    {
        private TextBox testtb;

        public Form1()
        {
            InitializeComponent();

            testtb = new TextBox();
            testtb.Location = new Point(50, 50);
            testtb.Size = new Size(212, 20);
            testtb.Name = "testtb";
            testtb.TabIndex = 5;
            panel1.Container.Add(testtb);
        }
    }

Lg kiname
 
Hi,

BreakPoint setzen, schrittweise debuggen, Variablen und Objekte prüfen - das kann dir keiner abnehmen.

VG,
Mad
 
In deinem Code wird kein panel1 initialisiert.
Außerdem heißt es panel1.Controls.Add, was natürlich auch nur funktioniert wenn das Panel bereits da ist. Initialisieren während der Laufzeit ist eine schlechte Idee. Wenn es sich vermeiden lässt dann erstell das Panel vorher und blende es einfach mit Hide() aus undmit Show() ein wenn es gebraucht wird. No Magic.

mfg,
Max
 
Zuletzt bearbeitet:
Während der Laufzeit erstellen kann schon Sinn machen, er will ja ein dynamisches Layout was sich je nach Datenbank-Tabelle/Spaltentyp ändert, jedes Panel soll dann vermutlich eine Row der Tabelle beeinhalten und das Panel selbst mehrere (ebenfalls dynamisch) Textfelder, Zahlenfelder, Labels, Knöpfe, usw ..
Oder vielleicht greife ich zuweit vor, jedenfalls ist der Tipp panel1.Controls.Add(...) genau richtig.
 
Ahh.. ich hatte einen groben fehler es war wirklich nur das Container falsch!
 

Ähnliche Themen

Zurück
Oben