Moskus Skrevet 12. september 2006 Skrevet 12. september 2006 Hei! Jeg lager et program som skal ha en typisk "Settings Dialog" med kanskje et TreeView på høyresiden som lister opp de forskjellige kategoriene med innstillinger. Et trykk på en innstilling viser tilhørende Controller på venstresiden av skjemaet. Men det var jo ikke helt enkelt å få til. En mulighet er jo å legge alle Controller tilhørende én innstilling i en Container og så skjule denne når den ikke behøves. Men det gjør jo at det blir litt mer tungvindt å legge opp alle skjermbildene, så jeg håpte det fantes en bedre løsning. Kan man f.eks. lage flere skjemaer på forhånd for så å kombinere dem i et skjema etterpå?
j000rn Skrevet 12. september 2006 Skrevet 12. september 2006 Hvis du mener <form> når du prater om skjema så kan du IKKE neste dem. Du kan ha flere på siden uavhengig av hverandre, men det er også litt knotete med ASP.Net. Prøvd å bruke UserControl'er? (Disse kan du laste dynamisk ved å bruke LoadControl også, slik at du slipper å holde styr på dem med Visible=True/False)
GeirGrusom Skrevet 12. september 2006 Skrevet 12. september 2006 Hvis du mener webside programmering, se bortifra dette. Det jeg har gjort er å lage et treeview, og assigne et System.Type til hver som Tag, og etterpå kalle System.Activator.CreateInstanceFrom(TreeNode.Tag) Og hver av disse er en typisk Form bare, med hva en vil ha av innhold, men det lønner seg å sette FormBorderStyle til None, så kan ingen flytte vinduet Og sette [Resultat].TopLevel til False, og på kontrollen som skal inneholde formen/usercontrolen, må du kalle Controls.Add(resultat) Og når en annen TreeNode blir valgt, bare Disposer du den gamle formen/kontrollen eksempel: if (ActivePage != null) { ActivePage.Close(); ActivePage.Dispose(); pnlDock.Controls.Clear(); ActivePage = null; } if (e.Node.Tag != null) { ActivePage = (Form)Activator.CreateInstance((System.Type)e.Node.Tag); ActivePage.TopLevel = false; ActivePage.Location = new Point(0, 0); pnlDock.Controls.Add(ActivePage); ActivePage.Show(); }
Moskus Skrevet 12. september 2006 Forfatter Skrevet 12. september 2006 Beklager den noe upresise formuleringen. Det er snakk om en Windows-applikasjon, med andre ord "Forms" om du vil...
oyvind_b Skrevet 13. september 2006 Skrevet 13. september 2006 Et triks er å bruke en tabcontrol der du skjuler selve tab'ene, så kan du bruke en TreeView til å sette aktiv TabPage (f.eks. tabControl.SelectedIndex = 0). Kode for å skjule tab'ene (f.eks. i Form_Load): tabControl1.Region = new Region(new RectangleF(tabPage1.Left, tabPage1.Top, tabPage1.Width, tabPage1.Height)); På denne måten har du full kontroll med de forskjellige "sidene" i design mode. Øyvind
Moskus Skrevet 13. september 2006 Forfatter Skrevet 13. september 2006 Ja, jeg lurte på om dette var en løsning men fant ingen måte å skjule tab'ene på! Så tusen takk! Får prøve det!
GeirGrusom Skrevet 13. september 2006 Skrevet 13. september 2006 Hei! Jeg hadde en elegant løsning her ! :S
Moskus Skrevet 14. september 2006 Forfatter Skrevet 14. september 2006 Det er mulig, men plagsomt lett å forstå for en ikke-utdannet-innen-it-eller-programmering-mann er det ikke... Men mulig jeg kan klare å få det til.
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå