Autor Beitrag
Skiller-1988
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 100

Win XP | Debian | Ubuntu
C# | PHP | VB.NET
BeitragVerfasst: Fr 29.08.08 15:26 
Hi,
auch wenn ich mich schon fsat für diese Frage schähme, weil die Antwort sicher super einfach ist, muss ich sie trozdem stellen da mir zum Freitag keine elegante Lösung dazu einfällt.

Also mein Problem:
Ich habe ein Hauptfenster ( = Mdicontainer ) und möchte dann innerhalb dieses Mdicontainer ein mdichildfenster öffnen, was ja soweit kein Problem ist, allerdings möchte ich nur genau 1 mdi childfenster öffnen und wenn ich das zweite mal auf den Butten, für das childfenster klicke sollte sich kein weiteres childfenster öffnen sondern der Focus auf das geöffnete gesetzt werden.

ausblenden C#-Quelltext
1:
2:
3:
            Form2 mi = new Form2 ();
            mi.MdiParent = this;
            mi.Show();


so hab ich das gerade weis aber das es so nicht gehen kann weil ja immer ein neues Objekt erstellt wird.

_________________
~ Wer Rechtschreibfehler findet darf sie behalten ~
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4806
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 29.08.08 15:59 
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Form[] forms = MdiChildren;
if(forms.Length > 0)
{
  forms[0].Select();
}
else
{
   ... // dein bisheriger Code
}


Aber wenn du nur genau 1 Unterfenster brauchst, warum benutzt du dann überhaupt MDI?
Skiller-1988 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 100

Win XP | Debian | Ubuntu
C# | PHP | VB.NET
BeitragVerfasst: Fr 29.08.08 16:39 
Ja müsste funktionieren erstmal Danke für deine Hilfe, eigentlich hätte ich da aber auch selber drauf kommen können.
Ich nutze MDI damit ich ein Hauptfenster habe und ich möchte nur genau 1 MDIchildren pro Kategorie bzw Button, das heißt es können dann schön mehrere MDIchildrenfenster gleichzeitig offen sein nur sollten diese unterschiedlichen Inhalt haben.

_________________
~ Wer Rechtschreibfehler findet darf sie behalten ~
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4806
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 29.08.08 16:52 
Ok, dann benötigst du aber eine andere Abfrage:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
Form OpenForm(Type type)
{
  foreach(Form form in MdiChildren)
  {
    if(form.GetType() == type)
    {
       form.Select();
       return form;
    }
  }

  Form newForm = (Form)Activator.CreateInstance(type);
  newForm.MdiParent = this;
  newForm.Show();

  return newForm;
}

// Aufruf:
OpenForm(typeof(Form2)); // besseren Namen für Formular vergeben!!!

Jedes Unterformular muß dann eine eigenständig von Form abgeleitete Klasse sein.
Alternativ könntest du auch eine Unterformular-Klasse mit einer Kategorie-Auflistung (enum) erstellen und dann die Abfrage (statt dem Typ dann den enum-Wert) ändern.