Hallo zusammen kann mir einer mal Tipp geben wie eine Windows Form "panel" public bekomme.
Wenn ich so schreibe
abereich abereich = new abereich();
abereich.TopLevel = false; abereich.Name = abereich.Name;
abereich.Parent = panel2;
abereich.Show(); abereich.Dock = DockStyle.Fill;
abereich.BringToFront();
abereich.FormBorderStyle = FormBorderStyle.None;
this.Hide();
Kommt Fehlermeldung das der Name "panel2" im aktuellen Kontext nicht vorhanden ist
** panel2 liegt in Form1 aber bekomme ich Sie public **
abereich abereich = new abereich();
abereich.TopLevel = false; abereich.Name = abereich.Name;
abereich.Parent = Form1.panel2;
abereich.Show(); abereich.Dock = DockStyle.Fill;
abereich.BringToFront();
abereich.FormBorderStyle = FormBorderStyle.None;
this.Hide();
Da bekomme ich die Meldung
Der zugriff auf WindowsFormsApplication1.Form1.panel2 ist aufggrunde der Sicherheitsebene nicht möglich
Für das nicht statische Feld, die Methode oder Eigenschaft "WinfdowsFormsApplication1.Form1.panel2"" ist ein objektverweis erforderlich.
Prinzipiell reicht es wenn du das Panel einfach als public in der Forms-Klasse definierst, aber das ist wahrscheinlich nicht einmal nötig. Was möchtest du denn erreichen?
wo wird abereich definiert, also in welcher Klasse und Methode und in welchem Verhältnis steht diese zu Form1? Außerdem, Form1 ist mit ziemlicher Sicherheit eine Klasse und kein Objekt.
Das sieht mir sehr danach aus als würden Grundlagen fehlen. Probier einmal mit:
Visual Studio Open Book
und siehe auch diesen Thread: Warum die GUI anderen Klassen unbekannt sein sollte
As a man thinketh in his heart, so he is.
Von Form1 wir per click eine neu Form geöffnet "anmeldung" bei eingaben von richtige password wird die Form anmeldung geschlossen und dann soll das neue Fenster "abereich" in der "Form1" panel angezeigt werde.
Das Fenster abereich 🤔
Ist das wirklich ein Form oder ist das ein Usercontrol?
Probier es einmal so:
Lege ein Form-Klasse LoginDlg an. Erweitere diese Klasse um Properties die die deine Anmeldungsdaten repräsentieren. Also z.B. Password u. User.
In Form1 legst du dir ein LoginDlg-Form an und rufst es mit ShowDialog auf. Falls der Benutzer OK geklicked hat, überprüfst du die Daten. Falls alles stimmt, zeigst diesen abereich an.
Leg ihn als Usercontrol an und leg ihn in den Hintergrund und Disable ihn. Wenn die Benutzerdaten stimmen, setzt du die Properties:
abereich.Enabled = true;
abereich.BringToFront();
As a man thinketh in his heart, so he is.
Hallo
ich glaube eher, das das umgekehrt sein muss. Nicht dem neuen Fenster wird das Panel als Parent zugeordnet, sonder das neue Fenster wird als Control dem Panal hinzugefügt.
abereich abereich = new abereich();
abereich.TopLevel = false;
abereich.Name = abereich.Name;
abereich.Show();
abereich.Dock = DockStyle.Fill;
abereich.BringToFront();
abereich.FormBorderStyle = FormBorderStyle.None;
panel2.Controls.Add(abereich);
this.Hide();
Thomas
Jetzt soll nach der anmeldung die abreich.cs in Form1 panel angezeigt werden