Moskus Skrevet 12. september 2006 Del 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å? Lenke til kommentar
j000rn Skrevet 12. september 2006 Del 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) Lenke til kommentar
GeirGrusom Skrevet 12. september 2006 Del 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(); } Lenke til kommentar
Moskus Skrevet 12. september 2006 Forfatter Del Skrevet 12. september 2006 Beklager den noe upresise formuleringen. Det er snakk om en Windows-applikasjon, med andre ord "Forms" om du vil... Lenke til kommentar
oyvind_b Skrevet 13. september 2006 Del 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 Lenke til kommentar
Moskus Skrevet 13. september 2006 Forfatter Del 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! Lenke til kommentar
GeirGrusom Skrevet 13. september 2006 Del Skrevet 13. september 2006 Hei! Jeg hadde en elegant løsning her ! :S Lenke til kommentar
Moskus Skrevet 14. september 2006 Forfatter Del 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. Lenke til kommentar
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å