Laden...

Viele Panels, viele Dateien, ein Form

Erstellt von Atomroflman vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.551 Views
A
Atomroflman Themenstarter:in
266 Beiträge seit 2007
vor 16 Jahren
Viele Panels, viele Dateien, ein Form

Hallo ihrs,

ich habe ein Form mit 2 Panels (siehe Anhang),
und nun möchte ich gerne das PNL2, das eine Größenvorgabe darstellt, duch andere Panels ersetzen. Das ganze soll bei einem Klick auf einen Button der in PNL1 dargestellt wird passieren.

Derzeit habe ich es so gelöst dass, die Panels die als Ersatz in Frage kommen auf der Form nebeneinander abgelegt sind. Ich möchte aber gern die Panels in einer anderen Datei auslagern (so wie andere Forms z.B.). Ich möchte quasi eine Form2.cs haben in der ein Panel liegt, dass man nach möglichkeit auch noch im Designer bearbeiten kann...

Schonmal danke in Voraus!...

Von all den Sachen, die mir verloren gegangen, hab ich am meisten an meinem Verstand gehangen... MfG...

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Atomroflman,

nimm UserControl statt Panel.

Siehe auch Mit Forms eine art Frame einer Website nachbauen?

herbivore

A
Atomroflman Themenstarter:in
266 Beiträge seit 2007
vor 16 Jahren

Hallo herbivore,

danke erstmal für die Antwort.
Folgender Code hat mir schon etwas weiter geholfen...


        private void btnShowForm2_Click(object sender, EventArgs e)
        {
            Form2 content = new Form2();
            content.TopLevel = false;
            panel1.Controls.Add(content);
            content.WindowState = FormWindowState.Maximized;
            content.Show();
        } 

aber ich suche eine Möglichkeit die Form in meinem Panel auch dynamisch generieren zu können...


private void SelectFrame(Form LoadForm)
{
//kopiere die LoadForm in mein Fenster
}

So in etwa...

Von all den Sachen, die mir verloren gegangen, hab ich am meisten an meinem Verstand gehangen... MfG...

2.760 Beiträge seit 2006
vor 16 Jahren

Das ist eigentlich auch kein Problem denn du kannst mit Hilfe von typeof(myForm) den Konstrutor ermitteln und dann eine beliebige Klasse dynamisch instanzieren und hinpacken wo du möchtest.

[EDIT]
folgender code erstellt z.B. einen Button der bei 100, 100 auf der aktuellen Form platziert wird. Das selbe Prinzip kannst du auch bei anderen Typen anwenden.


         Type t = typeof(Button);

         object myInstance = Activator.CreateInstance(t);

         if (myInstance is Button)
         {
            Button btn = (Button)myInstance;
            btn.Left = 100;
            btn.Top = 100;
            btn.Size = new Size(80, 30);

            Controls.Add(btn);
         }

A
Atomroflman Themenstarter:in
266 Beiträge seit 2007
vor 16 Jahren

👍Hallo jaensen,

ich habe aber das Problem dass ich verschiedene Klassen habe...


class Form1 [...]
class Form2 [...]

private void SelectForm(string FormName)
{
   //FormName = Form2
   Type t = typeof(FormName);
   //jetzt wird aber t zu string
   object myInstance = Activator.CreateInstance(t);
   Controls.Add(MyInstance);
}

Das eigentliche Problem daran ist den string in einen Type umzuwandeln...

EDIT: Habs schon gefunden 😁 👍 Danke!


Activator.CreateInstanceFrom(WindowsApplication3, MyForm);

Von all den Sachen, die mir verloren gegangen, hab ich am meisten an meinem Verstand gehangen... MfG...

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo, Atomroflman,

du kannst ja bei Activator.CreateInstance den Typ als String angeben. Dann hast du es doch. Oder du verwendest Type.GetType. Du musst nur aufpassen, dass du den String im Format von Type.AssemblyQualifiedName übergibst.

herbivore

A
Atomroflman Themenstarter:in
266 Beiträge seit 2007
vor 16 Jahren

Da hast du aber ne gute Idee...


Type.GetType(Mystring);

Das war die bessere Lösung... auf jeden Fall einfacher Danke!

Von all den Sachen, die mir verloren gegangen, hab ich am meisten an meinem Verstand gehangen... MfG...