Jag har ett MdiParent forrmulär som jag vill öppna ett childfönster inom. Om jag skapar ett Form2 tex hur gör jag då för att få detta Form 2 att öppna sig som ett childfönster i parentcontainern? Jag verkade fixa det nu!! Men inte är det snyggt inte. Har du satt huvudfomulärets egenskap IsMdiContainer = True? Så har jag gjort och inte haft några problem alls... Hej Johan Det finns någon klass i System.Windows.Forms.* som är just mdi-container. Om du vill ha detaljkontroll kan du se till att sätta ut den själv istället för att låta Form-klassen göra det åt dig i IsMdiContainer-propertyn <b>Öppnade barnfönster visas alltså alltid "under" föräldrafönstrens egna kontroller. Jag trodde de lades ovanpå, som ett lager man lägger på och tar bort liksom.</b> Tack alla för era svar. Jag har lärt mig hur det funkar men det är bra att få det bekräftat genom era svar.MdiParent, MDiChild
Det närmaste jag kommer är genom följande syntax men det blir inte som jag tänkt mig.
Form2 oChild = new Form2();
oChild.MdiParent = this;
oChild.Show();
Detta öppnar mitt Form2 men mina labels och annat som jag placerat i Form2 visas inte. Det som talar om att formuläret öppnas är genom captiontexten högst upp i den "blå" borden i mitt Parentformulär. Om mitt Parentformulär heter Form1 med ett öppnat childfönster som heter Form2 står följande i Form1.caption: Form1 [Form2].
Jag vill öppna Form 2 inom Form1 med synliga labels mm, hur gör jag det?
Tack!Sv: MdiParent, MDiChild
Är verkligen enda sättet att efter man anropat oChild.Show(); måste sätta MDIParent formulärets kontroller till .visible = false; för att få oChild att visas? Det borde finnas ett bättre sätt.
Någon som vet?Sv:MdiParent, MDiChild
/JohanSv: MdiParent, MDiChild
Ja, IsMdiContainer är satt till true.
Det verkar som när föräldrafönstret har kontroller på sig själv så kan inte barnfönstren visa sina kontroller över föräldrafönstrets egna kontroller. Om jag däremot skapar ett naket föräldrafönster utan kontroller så fungerar allt bra från början som man tänkt sig.
Öppnade barnfönster visas alltså alltid "under" föräldrafönstrens egna kontroller. Jag trodde de lades ovanpå, som ett lager man lägger på och tar bort liksom.Sv:MdiParent, MDiChild
Sv:MdiParent, MDiChild
Nu är jag inte 100% säker på vad du egentligen menar, man jag tror att jag vet det nu...
Det "rätta" sättet att göra det är att avdela en vissa del av ytan på mdiparent till att vara mdi-yta. Testa att göra följande:
1. Skapa nytt projekt
2. Lägg till en Panel och Dock = left
3. Lägg till en Splitter och Dock = left
4. Lägg till en Panel och Dock = top
5. Lägg till en Splitter och Dock = top
6. Lägg till lite kontroller PÅ panelerna
7. Sätt ismdicontainer = true, läggmärke till vilken del av formuläret som ändrar färg
Steg 2
Skapa ett, eller flera, formulär och knyt dem till något event på mdiparent (tex knapptryckning) med
<code>
Form2 frm = new Form2();
frm.MdiParent = this;
frm.Show();
</code>
Fungerar det nu mer som du har tänkt dig?
Edit: Oki, nu är jag nog mer på vad du menar. Nej, mdichildren läggs inte ovanpå de kontroller som finns utan det brukar man lösa genom att använda paneler och andra kontroller som avgränsare för en viss del av formuläret som får vara MDI-yta som INTE innehåller några kontroller. Testa det ovan och se om du inte kan få ide'er från det...Sv: MdiParent, MDiChild
Det fungerar som du skríver Marcus.