Hallo alerseits,
leider habe ich das Thema per Suche hier noch nicht entdeckt, deswegen muß ich diese triviale Frage mal an Euch richten. (Denke doch das es nicht so schwer sein sollte)
Mein Programm öffnet verscheiden Fenster. Wie kann ich mit meiner Hauptform abfragen, welche Fenster mein Programm schon offen hat und diese gegebenfalls wieder schließen?Ich möchte nicht das bestimmte Fenster erst aktivieren müssen per Maus oder so, also es soll alles von der MainForm aus machbar sein.
Danke Euch im voraus!
Hallo,
lege Dir in der Hauptform eine Collection an, der Du alle geöffneten Fenster hinzufügst. Die kannst Du dann durchlaufen und erhälst so die gewünschte Information. Nur nicht vergessen, beim Schließen eines Fensters dieses aus der Collection zu entfernen!
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Du meinst in ein ArrayList? Ist ja auch eien Collection oder? Nur was lege ich hinein? Theorie is klar, nur könntest Du mir ein kleines Beispiel geben, wie das ganze praktisch aussieht?
Du musst dich nicht selber um die FormCollection kümmern. Die wird automatisch gepflegt.
Schau dir mal Application.OpenForms an.
FormXy formTest = new FormXy();
formTest.Show();
// Load Event der zu öffnenden Form
formXy_Load(object sender, EventArgs e)
{
foreach (Form form in Application.OpenForms)
{
if (form.Shown == true)
{
form.Activate();
return;
}
form.Show();
}
}
Eine quick & dirty Lösung, mit der du aber sicherlich erstmal was anfangen kannst. Code nicht getestet 😉
> Codejunky <
Aha...schau ich mir mal an. Mal sehen ob ich damit zurecht komme. Danke.
Hallo,
Schau dir mal Application.OpenForms an Das gibts ja auch noch!
Ich habe bei mir öfters typisierte Collections, um direkt Zugriff auf alle offenen Forms eines bestimmten Typs zu bekommen, da ist mir das glatt entfallen!
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Original von MarsStein
Hallo,Schau dir mal Application.OpenForms an
Das gibts ja auch noch!
Ich habe bei mir öfters typisierte Collections, um direkt Zugriff auf alle offenen Forms eines bestimmten Typs zu bekommen, da ist mir das glatt entfallen!
Das hat den Nachteil, welcher für mich nervig ist, wenn ich mit solchen Sachen zu tun habe, dass man die Collection immer mitpflegen muss.
> Codejunky <
Problem: Application.OpenForm gitb es nur in FW 2.0. Und ich armes Schwein kann es nicht installieren, weil ich ausschließlich mit FW 1.x arbeiten MUß!!!
HAbt Ihr dann für mich weitere Hinweise?
Sieht wohl so aus, als ob ich so eine Collection selber bauen muß, oder?
Logo, dann mach dir deine eigene.. bei jedem Show() / ShowDialog() würde ich die Form am besten zu einem Dictionary hinzufügen.
Dictionary<string, Type> formDictionary = new Dictionary<string, Type>();
formDictionary.Add("FormMain", typeof(FormMain));
so ungefähr kannst du das machen.
> Codejunky <
Ich hab erst jetzt Deinen Beitrag gelesen. Hab jetzt ein ArrayList mit meinen Forms drinnen:
MyForm form = new MyForm();
form.show();
:
:
mylist.Add(FluidPropsForm);
Es wird immer nur eine Form aufgerufen. Ich möchte aber nun über das mylist die Form schließen. Wie kann ich das anstellen? Ich überleg schon ne Weile, komme aber auf keinen Ansatz, bzw fehlt mir das das nötige Wissen.
so nach dem Motto
mylist[0].close();
Das is aber Käse, geht ja so nicht. Aber damit ihr wißt was ich meine 😁
Also mithilfe der mylist die richtige Form schließen.
Hab ich da meinen Finger beim Stichwort "Delegaten" richtig?
Hallo,
Original von Pellaeon
mylist[0].close();
Das is aber Käse, geht ja so nicht. warum denn nicht? Es stehen doch nur Forms in der Liste oder? Dann kannst Du ja casten:
Form f = (Form)mylist[0];
mylist.Remove(f);
f.Close();
müsste klappen.
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Jo, so gehts natürlich auch. Ich wollte wieder von hinten durchs Herz ins Auge.
Danke Dir!